You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

远程连接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测试就失败的原因。

接下来按以下步骤修复:

  1. 修改MySQL配置,移除/注释skip-networking

    • 打开配置文件:sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
    • 找到[mysqld]段落里的skip-networking行,要么直接删除,要么在前面加#把它注释掉
    • 保存退出(nano编辑器按Ctrl+O确认保存,回车后按Ctrl+X退出)
  2. 重启MySQL服务让配置生效

    sudo service mysql restart
    
  3. 验证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上监听了。

  4. 再次测试远程连接

    • 先试telnet:telnet 192.168.x.yyy 3306,成功的话会进入telnet界面(可能显示MySQL的初始握手字符)
    • 再用MySQL客户端测试:mysql -h 192.168.x.yyy -u root -p,输入密码后应该能正常进入数据库

额外补充两点注意事项:

  • 你的iptables规则看起来是允许3306端口的,但Ubuntu默认可能启用了ufw防火墙,执行sudo ufw status检查,如果是active状态,需要添加允许规则:sudo ufw allow 3306/tcp
  • 你的mysql.user表已经配置了root@192.168.x.yyy的账号,这部分权限配置是没问题的,不需要再修改

内容的提问来源于stack exchange,提问作者YvonBlais

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 08:58:14