远程连接MySQL服务器失败求助:报错Can't connect to MySQL server on '192.168.x.yyy'
解决Ubuntu 20.04上MySQL 8.0远程连接被拒绝的问题
看了你的配置和测试细节,核心问题一下子就找到了——你在mysqld.cnf里加了skip-networking这个参数!这个配置会强制MySQL完全禁用所有TCP/IP网络连接,不管你设置了bind-address还是开放了iptables端口,都没法通过网络访问MySQL,只能用本地套接字连接。这就是为什么你本地mysql -u root -p能正常连接,但加-h指定IP或者用telnet测试就失败的原因。
接下来按以下步骤修复:
修改MySQL配置,移除/注释
skip-networking- 打开配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf - 找到
[mysqld]段落里的skip-networking行,要么直接删除,要么在前面加#把它注释掉 - 保存退出(nano编辑器按
Ctrl+O确认保存,回车后按Ctrl+X退出)
- 打开配置文件:
重启MySQL服务让配置生效
sudo service mysql restart验证MySQL是否正常监听3306端口
用ss命令检查端口监听状态,确认MySQL在你指定的IP上开启了3306端口:ss -tulpn | grep 3306正常输出应该类似这样:
tcp LISTEN 0 150 192.168.x.yyy:3306 0.0.0.0:* users:(("mysqld",pid=xxxx,fd=xx)),说明已经在目标IP上监听了。再次测试远程连接
- 先试telnet:
telnet 192.168.x.yyy 3306,成功的话会进入telnet界面(可能显示MySQL的初始握手字符) - 再用MySQL客户端测试:
mysql -h 192.168.x.yyy -u root -p,输入密码后应该能正常进入数据库
- 先试telnet:
额外补充两点注意事项:
- 你的iptables规则看起来是允许3306端口的,但Ubuntu默认可能启用了ufw防火墙,执行
sudo ufw status检查,如果是active状态,需要添加允许规则:sudo ufw allow 3306/tcp - 你的
mysql.user表已经配置了root@192.168.x.yyy的账号,这部分权限配置是没问题的,不需要再修改
内容的提问来源于stack exchange,提问作者YvonBlais
相关产品推荐
相关产品推荐

