【问题标题】:Cannot Grant select on mysql 8.0.17无法在 mysql 8.0.17 上授予选择
【发布时间】:2019-12-18 23:23:53
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 您必须使用允许执行 GRANT 的帐户登录 MySQL。通常是root 帐户,除非您创建了其他帐户
  • alic 用户帐户已经存在吗?
  • 是的,alice 存在,我以 root 身份登录
  • 试试GRANT SELECT ON *.* TO 'alic'@'%';
  • mysql> GRANT SELECT ON *.* TO 'alice'@'%'; ERROR 1410 (42000): You are not allowed to create a user with GRANT。我将用户名更新为 alice,就像在 DB 中一样

标签: mysql grant


【解决方案1】:

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

您可以将您的角色设置为多个用户。

类似这样的:

1 - 创建角色:

create ROLE name_of_your_role;

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';

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

grant 'name_of_your_role' to 'alice';

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

set default role 'name_of_your_role' to 'alice';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    相关资源
    最近更新 更多