Mysql

不允許 root 授予 MySQL 數據庫的權限

  • May 31, 2019

我有一個 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)

如您所見,我可以以 root 身份登錄,root 擁有所有權限*。*. 任何想法怎麼會發生這種情況?我在保留數據的同時沒有升級 MySQL(我知道這可能是從 5 升級到 5.5 引起的)。謝謝。

您擁有***root@%***的所有權限,但沒有“授權選項”。在我的 MySQL 安裝中,我的 root 帳戶可以申請授權,這是 “show grants” 的輸出:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*some_hash' WITH GRANT OPTION

在 MySQL 中,給予“所有特權”不包括授予。必須明確給出。

即使您不在 5.5 上,也許您仍然需要從/mysql/bin目錄執行 mysql_upgrade?

在此處查看第一個答案:

引用自:https://serverfault.com/questions/581807