用习惯了MySQL5.7,当在MySQL8.0里创建用户时,习惯性直接敲GRANT指令,结果报错了:
mysql> grant all on *.* to 'user3'@'%' identified by '123456'; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by '123456'' at line 1
这是因为在MySQL8版本之前,使用GRANT语句通常可以同时创建用户并授予其权限。然而,在MySQL8版本中,引入了一些安全性改进和更严格的权限管理,导致了一些变化。
在MySQL8中,CREATE USER和GRANT语句被分开处理,这是为了提高安全性并允许更精细的权限管理。这个变化的主要原因在于:
分离权限管理: 在 MySQL 8 中,用户的创建和权限授予被视为两个不同的操作,这使得权限管理更加模块化和灵活。这样可以更精确地指定用户的创建和授权权限,避免了不必要的权限赋予。
安全性提升: 分离用户创建和权限授予操作可以减少潜在的安全风险。通过严格控制谁可以创建用户以及谁可以授予权限,可以降低不当操作和滥用权限的风险。
在MySQL8版本中,如果你想创建用户并授予其权限,需要按照以下步骤进行: 1)先CREATE USER:
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
2)再GRANT权限:
GRANT SELECT, INSERT ON database.* TO 'username'@'localhost';通过这种分离的方式,你可以更好地控制用户的创建和权限分配,以及确保数据库的安全性。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !