请问mysql8.0不能在grant时创建用户是什么原因?

描述

用习惯了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';
通过这种分离的方式,你可以更好地控制用户的创建和权限分配,以及确保数据库的安全性。

请注意,具体的语法和权限名称可能会因你的需求和环境而有所不同,上述示例仅供参考。





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分