问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Mysql连接报错排查解决记录

创作时间:
作者:
@小白创作中心

Mysql连接报错排查解决记录

引用
CSDN
1.
https://m.blog.csdn.net/weixin_60669486/article/details/145001867

本文记录了一次在KVM虚拟机环境下Mysql服务无法远程连接的问题排查过程。通过详细的步骤分析,最终发现是防火墙策略限制了3306端口的访问。文章适用于遇到类似问题的技术人员参考。

问题现象

宿主机重启后,KVM虚拟机内的Mysql服务无法远程连接。使用不同客户端工具连接时,报错现象如下:

dbeaver-ce 工具连接报错

Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
# 这个报错最常见的是java代码连接mysql服务报错,通常是因为连接数或者超时导致的。

navicat 工具连接报错

2002 - Can't connect to MySQL server on '192.168.122.181' (115)

远程终端cmd命令连接报错

通过尝试不同的客户端工具进行远程连接均无法连接成功,所以排除了客户端工具的问题。

开始排查Mysql服务部署环境的问题,逐一进行分析

  1. 现在KVM虚拟机内登录Mysql服务,可以成功登录,说明服务运行正常。

  2. 登录数据库内部查看Mysql服务配置
    2.1 查看root用户是否开启远程登录权限,通过下图可以看出Host已经修改成'%',允许远程登录。
    2.2 查看Mysql服务配置,超时设置、连接数设置、端口设置。配置信息均正常

    通过排查分析Mysql服务内部配置,可以排除Mysql服务本身问题。

  3. 排查Mysql服务运行环境问题
    3.1 检查Mysql服务运行状态,可以看出服务运行正常。
    3.2 检查Mysql服务端口监听,端口正常被监听。
    3.3 配置iptables规则允许Mysql服务可被连接。

![](https://wy-static.wenxiaobai.com/chat-rag-image/11907295890133284588)
  
![](https://wy-static.wenxiaobai.com/chat-rag-image/3138735942434808308)
#iptables -A INPUT -d 192.168.0.0/22 -i eth0 -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
#service iptables save
#service iptables restart
  

至此问题仍然没有解决,已经逐渐没有思路了。 突然想到Mysql服务运行的KVM虚拟机环境是服务器系统,可能是因为防火墙导致的吧。但总不能因为一个Mysql服务关闭防火墙,这不是长久之计。
查阅资料有一个解决方法,开放防火墙的3306端口,保证可被连接。

  
# 开放防火墙3306端口  Mysql默认端口号
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 刷新防火墙
firewall-cmd --reload
  

开放防火墙端口后,再次尝试远程连接Mysql。
通过不同方式远程连接Mysql服务均成功,至此问题解决。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号