不允许 root 授予 MySQL 数据库的权限

sz4*_*rto 9 mysql root

我有一个 MySQL 数据库,当以 root 身份登录时,我无法向新创建的数据库上的用户授予权限。

mysql> create database test1;
Query OK, 1 row affected (0.00 sec)

mysql> grant usage on *.* to 'test'@'%' identified by 'test';
ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)
mysql> show grants for root;
+--------------------------------------------------------------------------------------------------------------+
| Grants for root@%                                                                                            |
+--------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*hash_is_here' |
+--------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select user();
+-----------------+
| user()          |
+-----------------+
| root@172.17.0.4 |
+-----------------+
1 row in set (0.01 sec)
Run Code Online (Sandbox Code Playgroud)

如您所见,我可以以 root 身份登录,root 拥有. . 任何想法怎么会发生这种情况?我没有在保留数据的同时升级 MySQL(我知道这可能是由从 5 升级到 5.5 引起的)。谢谢。

Ben*_*oit 5

您拥有root@% 的所有权限,但没有“授予选项”的权限。在我的 MySQL 安装中,我的 root 帐户可以申请授权,这是“show grants”的输出:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*some_hash' WITH GRANT OPTION
Run Code Online (Sandbox Code Playgroud)

在 MySQL 中,授予“所有权限”不包括授予。必须明确给出。

  • 谢谢,我发现它无法回答我自己的问题。Root@% 没有授权,只有 root@localhost。https://github.com/orchardup/docker-mysql/commit/0a8dd7d85e745b26aa9793e53b92550ad968ca7d#commitcomment-5664813 (2认同)