Mysql连接报错排查解决记录

Mysql连接报错排查解决记录

背景:
复制代码
	系统:uos   server-1060e

​	运行环境kvm虚拟机

​	mysql版本:5.7.44, for Linux (x86_64)
问题现象:

宿主机重启后,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服务可被连接。

复制代码
#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服务均成功,至此问题解决。

关注灵活就业新业态,关注公账号:贤才宝(贤才宝https://www.51xcbw.com

相关推荐
这个DBA有点耶15 分钟前
分布式数据库到底该不该上?从判断标准到架构选型的实战思考
数据库·架构·dba
01_ice1 小时前
MySQL库和表的操作
数据库·mysql
布莱克6051 小时前
数据库索引分类:数据结构、物理存储与逻辑角度详解
数据结构·数据库
SelectDB2 小时前
DeepSeek Harness 接入 Litefuse:完善 Agent 可观测与评估能力
数据库
这个DBA有点耶3 小时前
从库延迟的“二次放大”效应:一次大事务,拖垮整个读写分离
数据库·mysql·架构
LearnYard3 小时前
自然语言驱动的数据图表生成:几款工具功能对比实践
数据库·百度·powerpoint
一个有温度的技术博主3 小时前
MySQL 三大日志协同机制:redo log、undo log 与 binlog 的联合运作
数据库·mysql·oracle
ltl3 小时前
ClickHouse 与 DuckDB 选型:不是同一类列存
数据库
ltl4 小时前
RocksDB WAL 与 WriteBatch:持久化与原子批写
数据库
ltl4 小时前
流批一体与增量视图:Materialize、RisingWave 与 DBSP
数据库