无法在mysql 8.0.17上授予select权限。

7
我想授予用户从任何主机的 select 权限,但是一直报错,提示你不允许创建用户。
mysql>GRANT SELECT ON *.* TO 'alice'@'%' WITH GRANT OPTION;

ERROR 1410 (42000): You are not allowed to create a user with GRANT

我不想创建一个新用户,因此我使用了 CREATE USER 命令。
我尝试创建新用户,但授权命令也失败了。

是的,Alice 存在,并且我以 root 用户身份登录。 - mrakona
尝试执行 GRANT SELECT ON *.* TO 'alic'@'%'; - James
是的,我是root GRANT SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、RELOAD、SHUTDOWN、PROCESS、FILE、REFERENCES、INDEX、ALTER、SHOW DATABASES、SUPER、CREATE TEMPORARY TABLES、LOCK TABLES、EXECUTE、REPLICATION SLAVE、REPLICATION CLIENT、CREATE VIEW、SHOW VIEW、CREATE ROUTINE、ALTER ROUTINE、CREATE USER、EVENT、TRIGGER、CREATE TABLESPACE、CREATE ROLE、DROP ROLE ON *.* TO root@%WITH GRANT OPTION | | GRANT SYSTEM_USER ON *.* TOroot@%| GRANT AUDIT_ADMIN、CLONE_ADMIN、INNODB_REDO_LOG_ARCHIVE、TABLE_ENCRYPTION_ADMIN ON *.* TOroot@% WITH GRANT OPTION - mrakona
是的,该用户已经创建。 - mrakona
我已经删除了mysql.users并恢复了默认的MySQL配置,问题现在已经解决。感谢你们的回答。 - mrakona
显示剩余15条评论
2个回答

3

我遇到了同样的问题。

但是我的问题在于我在CREATE USER查询中犯了一个错误。我想要创建grafana用户,但是执行了以下查询: CREATE USER grafan IDENTIFIED BY '<password>'; (请注意,我在这里创建的用户是grafan而不是grafana

然后,当我执行查询GRANT SELECT ON mydb.* TO grafana@'%';时,我收到了一个错误信息:ERROR 1410 (42000): You are not allowed to create a user with GRANT。没有提及用户grafana不存在。

我花了大约20分钟来弄清楚我做错了什么。

所以如果你正在阅读这篇文章,请检查您是否已经正确地创建了用户。希望这能帮助到某些人。


做得好 @hungl。对我来说,这是在“localhost”上的一个错误。查询“SELECT user, host FROM user;”显示了“?localhost?”而不是“localhost”,因为在创建相关用户时有一个拼写错误。 - Abpostman1

3
在这个MySql版本(8及以上)中,一个好的想法(也是一个好的实践)是配置角色,然后为其设置用户,就像这篇好文章所述(读一下,非常好!)。
您可以将您的角色设置给多个用户。
类似于这样:
1- 创建角色:
create ROLE name_of_your_role;

2 - 为该 ROLE 设置必要的权限。需要注意,在这个 MySql 版本中不需要使用 Flush Privileges 命令。下面是一个示例(请将mydatabase expression替换成您的数据库名称或通配符,根据您的需求):

grant alter,create,delete,drop,index,insert,select,update,trigger,alter
 routine,create routine, execute, create temporary tables 
on mydatabase.* to 'name_of_your_role';

3 - 为您的用户授予角色:

grant 'name_of_your_role' to 'alice';

4 - 将此角色设置为您的用户的默认角色:

set default role 'name_of_your_role' to 'alice';

工作得很好,谢谢 :-) - Vinod K

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