解决java.sql.SQLException: null, message from server: “Host xxx‘ is not allowed to connect to this MySQL server异常
一、背景描述
本机访问MySQL数据库正常(即使用 localhost 或者 127.0.0.1 两种方式)。局域网内同事的电脑访问我电脑的数据库结果报错。用户使用的是root用户,即超管账户。
java.sql.SQLException: null, message from server: "Host 'WIN10-194.cloud.lxkj.com' is not allowed to connect to this MySQL server"
二、原因排查
2.1 防火墙设置
查看防火墙设置,是否允许远程访问mysql数据库这个程序。经查看本机确实限制了不允许远程访问msyql这个程序。于是把防火墙设置成可以允许访问本机电脑上的MySQL程序。
telnet 172.xx.xx.26 3306
结果还是不通。在我本机使用 IP 访问自己电脑上的MySQL数据库,结果同样报上述错误。
如果自己无法控制服务器,那么需要请运维同学帮忙查看,检查MySQL服务器的防火墙设置,是否限制3306端口,可通过telnet方式,在web服务器上测通MySQL服务器上的端口是否测通。经过上述操作如果没有问题,则服务器本身的ip或者端口限制的情况可以基本排除。
2.2 数据库本身
use mysql;
select user,host from user;
2.3 结论
经过上述原因排查,可以确定,这个问题的原因是数据库只允许 localhost 或 127.0.0.1 访问,不允许远程访问导致的。
三、解决方案
3.1 Windows系统
使用以下SQL语句,可以在数据库管理连接工具,变更用户的访问方式:
use mysql;
select user,host from user;
update user set host = '%' where user = 'root'
最后一步就是把你的MySQL服务重启,一定要重启!(任务管理器 –> 服务 搜索 mysql,右键重启即可)
3.2 Linux系统
mysql -uroot -p
use mysql;
select user,host from user;
步骤三:修改root用户的被限制的ip范围,改为不限制,及允许所有ip访问
update user set host = '%' where user = 'root'
flush privileges;
四、知识拓展
host=% 含义,%是通配符,host标识是设置允许访问的ip地址。
例如:
* host=localhost 只允许本机访问
* host=172.77.18.% 只允许172.77.18.网段的可以访问
* host=% 允许所有ip地址访问
原文地址:https://blog.csdn.net/weixin_44299027/article/details/134125308
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_16793.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!