本文介绍: 如果自己无法控制服务器,那么需要运维同学帮忙查看检查MySQL服务器防火墙设置是否限制3306端口,可通过telnet方式,在web服务器上测通MySQL服务器上的端口是否测通。局域网内同事的电脑访问电脑数据库结果报错。经过上述原因排查可以确定,这个问题的原因是数据库只允许 localhost 或 127.0.0.1 访问,不允许远程访问导致的。在我本机使用 IP 访问自己电脑上的MySQL数据库结果同样报上述错误host=% 含义,%是通配符host标识设置允许访问ip地址

一、背景描述

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地址访问

原文地址:https://blog.csdn.net/weixin_44299027/article/details/134125308

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_16793.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注