Ubuntu 20.04 VPS部署MySQL Server远程连接失败问题求助
错误核心判定
返回ERROR 2003 (HY000) (113)/EHOSTUNREACH errno -113 属于网络层主机不可达错误,请求包根本没有到达VPS的MySQL服务端口,和MySQL本身的bind-address配置、账号权限设置无关,之前针对MySQL做的所有调整都不会解决这个报错。
按优先级排查步骤
- 第一步:核对VPS实际公网IP
从你附的mysqld.cnf配置可见,你曾经注释过的bind-address值是82.165.117.119,但你远程连接使用的IP是82.165.117.19,两个IP数值差一位。登录VPS执行ip a,确认网卡绑定的实际公网IP,排除输错IP的低级问题。 - 第二步:检查云厂商侧安全组规则
你只在VPS系统内部的ufw防火墙放行了3306端口,绝大多数VPS服务商都会在云平台控制台额外加一层独立的入站安全组规则,这层规则不受VPS系统内部配置影响,默认仅放行22、80、443端口。需要登录VPS服务商的控制台,在入站规则中新增允许TCP 3306端口的通行规则,范围可设置为仅允许你本地公网IP访问,降低安全风险。 - 第三步:确认系统内部防火墙规则生效
登录VPS执行sudo ufw status,确认3306端口的规则状态为ALLOW,没有被其他高优先级规则拦截。 - 第四步:确认MySQL服务实际监听状态
执行sudo netstat -tulpn | grep 3306,确认MySQL监听地址为0.0.0.0:3306,如果显示为127.0.0.1:3306,需要在/etc/mysql/mysql.conf.d/mysqld.cnf的[mysqld]段下新增一行bind-address = 0.0.0.0,执行sudo systemctl restart mysql重启服务让配置生效。 - 第五步:本地连通性验证
本地终端执行telnet <VPS实际公网IP> 3306,如果能收到MySQL返回的版本字符串,说明网络通路已建立,再测试MySQL账号登录即可。
常见问题误区
- 账号权限错误的返回码为
ERROR 1045,和本次的113错误无关,不需要在未打通网络通路前调整MySQL用户权限。 - 所有MySQL配置修改完成后必须重启服务,否则配置不会生效。
内容的提问来源于stack exchange,提问作者Alexandre Schöne
相关产品推荐
相关产品推荐

