1. 错误信息
Error Code: 1044. Access denied for user ‘root’@’%’ to database xx
从提示的错误信息看是, root 用户无远程连接数据 xx 权限,需要给用户授权
2. 解决方案
2.1 5.7版本以下 MySQL
在服务器上登录mysql, 执行下面的命令, 查询用户权限信息
mysql> SELECT host, user, Grant_priv, Super_priv FROM mysql.user;
host | user | Grant_priv | Super_priv |
---|---|---|---|
% | root | N | Y |
% | test | Y | Y |
localhost | mysql.infoschema | N | N |
localhost | mysql.session | N | Y |
localhost | mysql.sys | N | N |
localhost | root | Y | Y |
可以查看到第一行中的 root 在 Grant_priv 权限为 N, 需要将权限改成 Y, 执行命令
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
2.2 8.x 版本 MySQL
在 8.x 版本, 不允许使用 root 用户远程连接 MySQL, 需要创建新用户进行远程连接, 例如创建新用户 test
CREATE USER 'test'@'%' IDENTIFIED BY '123456';
给 test 用户授权
GRANT ALL ON *.* TO 'test@'%';