【问题标题】:MySQL "mysql there is no such grant defined for user"MySQL“mysql没有为用户定义这样的授权”
【发布时间】:2016-09-19 02:17:08
【问题描述】:

当我将所有权限授予刚刚创建的新 root 帐户时发生此错误。

产生问题的步骤:

CREATE USER 'root'@'localhost';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
SHOW GRANTS for 'root'@'localhost';

在“显示授权”之后,我收到错误“mysql 在主机 'localhost' 上没有为用户 'root' 定义这样的授权”。执行前三个命令后没有错误。新用户创建成功。

我该如何解决这个问题?

更多信息: 我在我的 MacOS 笔记本电脑(OSX 10.10.5)上运行 MySQL 5.7。

【问题讨论】:

  • 我在 OSX 10.11.4 上的 MySQL 5.6.25 上测试了这段代码,它工作正常(不使用“root”,因为该帐户已经存在)。
  • 我在 Ubuntu 5.7.12 上测试了这段代码,它可以工作。

标签: mysql


【解决方案1】:

您发布的代码没有任何问题,但猜测尝试使用通配符 % 之类的

SHOW GRANTS for 'root'@'%';

(或)

或者,使用您创建的用户'root'@'localhost' 登录,然后使用SHOW GRANTS。见Documentation

【讨论】:

  • 感谢您的回复。但是,由于数据库服务器中不存在 'root'@'%',因此在使用“SHOW GRANTS for 'root'@'%'”时出现相同的错误。同样在输入我列出的这些命令后,创建的用户 'root'@'localhost' 不再具有任何特权,甚至没有“使用”特权。所以我什至无法使用该帐户登录。
【解决方案2】:

我不认为 mysql 允许您创建另一个 root 帐户。所以创建会导致错误。

CREATE USER 'root'@'localhost';

ERROR 1396 (HY000): Operation CREATE USER failed for 'root'@'localhost'

您应该在用户表中检查现有的 root 帐户,您会发现通配符是 '%',这应该意味着您不需要创建 localhost root 用户。

select * from user where user = 'root';

要求在根本地主机上显示授权应该可以,并且对我有用。

show grants for 'root'@'localhost';

【讨论】:

  • 实际上我在输入所有这些命令之前已经删除了用户'root'@'%'。用户 'root'@'localhost' 确实创建成功。在更改其权限之前,我能够使用该帐户登录。
【解决方案3】:

第 1 步: sudo mysql -u root -p

第 2 步: 撤销所有权限,从“用户名”@“本地主机”授予选项;

例如- 撤销所有权限,从 'admin'@'localhost' 授予选项;

第三步: 刷新特权;

我认为它会起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 2020-04-28
    • 2014-03-14
    相关资源
    最近更新 更多