MySQL:具有授权选项的用户无法授予创建用户权限。

10
我像这样使用 root 创建了一个名为 new_user 的用户:
GRANT ALL ON labor.* TO 'new_user'@'%' WITH GRANT OPTION;
GRANT ALL ON labor.* TO 'new_user'@'localhost' WITH GRANT OPTION;
GRANT CREATE USER ON *.* TO 'new_user'@'%';
GRANT CREATE USER ON *.* TO 'new_user'@'localhost';
GRANT RELOAD ON *.* TO 'new_user'@'localhost';
GRANT RELOAD ON *.* TO 'new_user'@'%'; 
FLUSH PRIVILEGES;

当我尝试以相同的方式但使用new_user创建另一个用户时,我遇到了访问被拒绝的错误。 这个错误发生在GRANT ALL行之后。
还需要添加哪些权限?
2个回答

19
新创建的用户缺少对 *.* 的授权选项(在 grant create user on *.* ... 命令中需要)。
GRANT GRANT OPTION ON *.* TO 'new_user'@'%';
GRANT GRANT OPTION ON *.* TO 'new_user'@'localhost';

1

只是想添加Xevelion's answer的内容。

当我创建尝试授予用户对数据库的访问权限时,我遇到了这个问题:

错误1410(42000):不允许使用GRANT创建用户

这是我如何解决它的方法

当您创建指定特定主机的用户并尝试指定不同主机的用户访问权限时,就会出现此错误。

因此,在我的情况下,我创建了一个指定数据库主机aurora-mysql-instance-0.cgi7whhgca9z.eu-east-1.rds.amazonaws.com的用户:

CREATE USER 'my_user'@'aurora-mysql-instance-0.cgi7whhgca9z.eu-east-1.rds.amazonaws.com' IDENTIFIED BY 'ghy7yyDteh';

然后我尝试授予用户访问指定不同主机的数据库的权限%

CREATE DATABASE my_db;
USE my_db;
GRANT ALL ON my_db.* TO 'my_user'@'%';

我所要做的就是删除现有的my_user用户,然后使用我要授予访问权限的主机重新创建它:
CREATE USER 'my_user'@'%' IDENTIFIED BY 'ghy7yyDteh';

然后我授予用户访问指定 % 主机的数据库:

USE my_db;
GRANT ALL ON my_db.* TO 'my_user'@'%';

这一次所有东西都运行良好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接