无法在 mysql 8.0.17 上授予选择

mra*_*ona 7 mysql sql-grant

我想向每个主机的用户授予选择权限,但出现错误,您不允许创建用户

mysql>GRANT SELECT ON *.* TO 'alice'@'%' WITH GRANT OPTION;

ERROR 1410 (42000): 不允许您使用 GRANT 创建用户

我不想创建新用户,因为我使用了命令 CREATE USER

我尝试创建一个新用户,但授予命令也失败。

Alv*_*mar 3

在这个 MySql 版本(8 及以上)中,一个好主意(也是一个好实践)是配置 ROLES,然后为其设置用户,就像这篇好文章(阅读它,非常好!)。

您可以将您的角色设置给许多用户。

像这样的东西:

1 - 创建角色:

create ROLE name_of_your_role;
Run Code Online (Sandbox Code Playgroud)

2 - 为 ROLE 设置必要的权限,并记住,在此 MySql 版本中,您不需要 Flush Privileges。示例(根据您的需要,将 mydatabase 表达式更改为您的数据库名称或通配符):

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';
Run Code Online (Sandbox Code Playgroud)

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

grant 'name_of_your_role' to 'alice';
Run Code Online (Sandbox Code Playgroud)

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

set default role 'name_of_your_role' to 'alice';
Run Code Online (Sandbox Code Playgroud)