Host ‘xxx.xx.xxx.xxx’ is not allowed to connect to this MySQL server mysql拒绝远程连接解决方案
1.问题产生原因 :mysql默认只支持本地连接
用命令查看mysql库中user表的host和user信息
select host, user from mysql.user;
-----------+------------------+
| host | user |
+-----------+------------------+
| locathost | root |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+------------------+
可看出root对应的host 为localhost,只支持本地连接
2.解决方案:放开远程连接权限
法一:
修改表结构:‘%’表示允许来自所有地址的连接,然后重启mysql
update mysql.user set host='%' where user='root';
执行完之后用命令查看mysql库中user表的host和user信息
select host, user from mysql.user;
-----------+------------------+
| host | user |
+-----------+------------------+
| % | root |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+------------------+
可看出root对应的host 为所有地址可连接
法二:
手动授权:
例如允许testuser用户用testpassword密码在任意位置远程连接任意的库和表,执行完可以刷新或者重启即可
GRANT ALL PRIVILEGES ON *.* TO 'testuser'@'%' IDENTIFIED BY 'testpassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
可以用具体的 库名和表名 替换通配符 *.*
可以用具体的 地址 替换通配符 %