我有一个 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() |
+-----------------+
| [email protected] |
+-----------------+
1 row in set (0.01 sec)
如你所见,我可以以 root 身份登录,root 拥有所有权限。。有什么想法知道为什么会发生这种情况吗?我没有在保留数据的情况下升级 MySQL(我知道这可能是由从 5 升级到 5.5 引起的)。谢谢。
答案1
您拥有以下权限根@%但没有“授权选项”。在我的 MySQL 安装中,我的 root 帐户可以应用授权,这是“show grants”的输出:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*some_hash' WITH GRANT OPTION
在 MySQL 中,给出“所有特权“不包括授予。必须明确给予。
答案2
即使您不是在 5.5 上,也许您仍然需要从/mysql/bin
目录运行 mysql_upgrade?