用习惯了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:
CREATEUSER'username'@'localhost'IDENTIFIEDBY'password';
2)再GRANT权限:
GRANTSELECT,INSERTONdatabase.*TO'username'@'localhost';通过这种分离的方式,你可以更好地控制用户的创建和权限分配,以及确保数据库的安全性。
请注意,具体的语法和权限名称可能会因你的需求和环境而有所不同,上述示例仅供参考。
审核编辑:刘清
-
MySQL
+关注
关注
1文章
829浏览量
26716 -
MYSQL数据库
+关注
关注
0文章
96浏览量
9440 -
mysql触发器
+关注
关注
0文章
6浏览量
1125
原文标题:为什么mysql8.0不能在grant时创建用户
文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论