Ubuntu下IP连接MySQL失败(错误113),如何解决?
解决MySQL无法通过IP地址连接的问题(错误113)
问题场景
Python程序通过localhost连接MySQL正常,但替换为Ubuntu系统的IP地址时,报错:'Can't connect to MySQL server on (IP):3306' (113)。
解决步骤
1. 修改MySQL绑定地址
MySQL默认仅监听localhost,需调整配置让其对外IP开放:
- 打开MySQL配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf - 找到
bind-address配置项,将其修改为0.0.0.0(监听所有IP)或你的具体IP地址 - 重启MySQL服务生效:
sudo systemctl restart mysql
2. 授权用户从指定IP访问
默认数据库用户可能仅允许localhost登录,需更新权限:
- 登录MySQL控制台:
mysql -u root -p - 执行授权命令(二选一):
- 允许用户从任意IP访问:
GRANT ALL PRIVILEGES ON `你的数据库名`.* TO '你的用户名'@'%' IDENTIFIED BY '你的密码'; - 允许用户从指定IP访问:
GRANT ALL PRIVILEGES ON `你的数据库名`.* TO '你的用户名'@'你的IP地址' IDENTIFIED BY '你的密码';
- 允许用户从任意IP访问:
- 刷新权限:
FLUSH PRIVILEGES;
3. 开放Ubuntu防火墙3306端口
Ubuntu的ufw防火墙可能拦截了MySQL端口的外部连接:
- 查看防火墙状态:
sudo ufw status - 若3306端口未开放,添加规则:
sudo ufw allow 3306/tcp - 重新加载防火墙:
sudo ufw reload
4. 确认IP地址正确性
- 用
ip addr命令查看系统正确的对外IP(通常在eth0或wlan0网卡的inet字段下) - 确保Python代码中
DB_HOST填写的是该真实IP,而非127.0.0.1或localhost
测试连接
用以下命令测试IP端口是否可达:
nc -zv 你的IP地址 3306
若输出succeeded!,说明网络层面已打通,可重新运行Python程序测试。
内容的提问来源于stack exchange,提问作者Merd Ceferzade
相关产品推荐
相关产品推荐

