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

求助:pymysql无法连接自建主机MySQL数据库(报2003错误)

无法连接主机自建MySQL数据库?来排查这些点

嘿,我注意到你能正常连接freemysqlhosting.net的免费数据库,但自己网站主机上的自建库却连不上,报错是网络不可达,咱们一步步来揪出问题所在:

  • 检查主机数据库的远程访问权限:绝大多数主机的MySQL默认只允许本地(localhost)访问,不会随便开放外部连接。你得登录主机的数据库管理面板(比如phpMyAdmin或者主机商自带的数据库设置界面),把你当前客户端的IP地址添加到允许访问的白名单里,要是不确定自己IP,也可以暂时设置允许特定IP段访问(不过开放全IP要注意安全哦)。
  • 确认数据库连接地址的正确性:你用的sql.******.it这个地址,是不是主机商提供的外部连接专用地址?有些主机的本地连接地址和远程连接地址不一样,可别把本地用的localhost或者内网地址拿来远程连接了。
  • 验证3306端口是否开放:MySQL默认用3306端口,你得确认主机服务器的防火墙、主机商的安全组有没有开放这个端口。可以在终端里试试telnet sql.******.it 3306或者nc -zv sql.******.it 3306,要是命令执行失败,那大概率是端口没开放或者地址不对。
  • 核对数据库账号的远程访问权限:你用的数据库账号,有没有被授予远程访问的权限?可以登录数据库本地控制台(比如通过主机的SSH或者phpMyAdmin的SQL命令行),执行以下命令:
    GRANT ALL ON 你的数据库名.* TO '你的用户名'@'你的客户端IP' IDENTIFIED BY '你的密码';
    FLUSH PRIVILEGES;
    
    这样能确保这个账号从你的IP地址能远程访问目标数据库。
  • 测试基础网络连通性:先ping一下sql.******.it,看看能不能解析到正确的IP地址,要是ping不通,要么是域名解析出了问题,要么是主机服务器本身网络故障,这时候可以联系主机商客服问问情况。

你的代码(隐私信息已脱敏):

#!/usr/bin/python3
import pymysql
db = pymysql.connect("sql.******.it", "******", "******", "******")
cursor = db.cursor()
cursor.execute("SELECT * FROM users")
results = cursor.fetchall()
print(results)
db.close()

报错信息:

pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on 'sql.******.it' ([Errno 101] Network is unreachable)")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:40:03