当前位置:首页 » 《随便一记》 » 正文

【MySQL异常】解决java.sql.SQLException: null, message from server: “Host xxx‘ is not allowed to connect to

17 人参与  2024年04月21日 09:25  分类 : 《随便一记》  评论

点击全文阅读


解决java.sql.SQLException: null, message from server: "Host xxx' is not allowed to connect to this MySQL server异常

一、背景描述二、原因排查2.1 防火墙设置2.2 数据库本身2.3 结论 三、解决方案3.1 Windows系统3.2 Linux系统 四、知识拓展

一、背景描述

Spring Boot + MySQL

本机访问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 数据库本身

使用以下SQL语句,查看数据库 root 用户信息:

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系统

步骤一:打开cmd,进入mysql

mysql -uroot -p

在这里插入图片描述
步骤二:查看root用户的信息

use mysql;select user,host from user;

在这里插入图片描述

步骤三:修改root用户的被限制的ip范围,改为不限制,及允许所有ip访问

update user set host = '%' where user = 'root'

在这里插入图片描述
步骤四:将权限更新操作刷新到内存中,而不用下次启动时生效

flush privileges;

在这里插入图片描述

之后再通过web服务器上的代码,访问数据库,果然好了。

四、知识拓展

host=% 含义,%是通配符,host标识是设置允许访问的ip地址。

例如:  * host=localhost只允许本机访问  * host=172.77.18.%只允许172.77.18.网段的可以访问  * host=%允许所有ip地址访问

本文完结!


点击全文阅读


本文链接:http://zhangshiyu.com/post/98287.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1