今天在Mysql中用grant授权用户遇见了 ERROR 1044 (42000): Access denied 错误,说明没有权限,但是明明是用root登陆,后来了解到root用户有多个host,而每个host的权限是不一样的。

默认 mysql -uroot -p登陆,host应该是localhost。

而用查询发现:

select * from mysql.user\G; 

root@localhost的Grant_priv: 是N,[email protected]的则是Y。

所以用

mysql -u root -p -h 127.0.0.1 

重新登陆便可以解决问题了。

也可以修改mysql.user表

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL ON *.* TO 'root'@'localhost';