select user();
select current_user();
第一个命令的结果是您尝试登录时的身份,第二个命令是您实际连接时的身份。确认您root@localhost
以MysqL 身份登录。
Grant_priv
到root@localhost
。这是您可以检查的方式。
MysqL> SELECT host,user,password,Grant_priv,Super_priv FROM MysqL.user;
+-----------+------------------+-------------------------------------------+------------+------------+
| host | user | password | Grant_priv | Super_priv |
+-----------+------------------+-------------------------------------------+------------+------------+
| localhost | root | ***************************************** | N | Y |
| localhost | debian-sys-maint | ***************************************** | Y | Y |
| localhost | staging | ***************************************** | N | N |
+-----------+------------------+-------------------------------------------+------------+------------+
您可以看到,对于root @ localhost,Grant_priv设置为N。必须为Y。下面是解决方法:
UPDATE MysqL.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL ON *.* TO 'root'@'localhost';
我重新登录,一切正常。