Python连接远程MySQL数据库失败求助:超时错误排查
解决远程MySQL连接超时及账号疑问
我来帮你一步步排查和解决这个问题:
一、先给你明确答案:用数据库账号密码,不是cPanel账号
你通过PHPMyAdmin创建的turboweb_jobsuser这个账号就是正确的连接账号,cPanel账号是用来管理主机面板的,和数据库连接完全不相关,这点不用纠结啦。
二、连接超时的核心原因及解决办法
出现(2003, "Can't connect to MySQL server on '195.201.204.153' (timed out)"),基本是远程连接的权限或网络拦截问题,按下面的步骤排查:
1. 检查MySQL的远程访问权限是否开启
很多主机商默认会禁止外部IP访问MySQL,你需要在cPanel里操作:
- 登录你的cPanel面板,找到
Remote MySQL(或者MySQL Databases里的远程访问设置) - 添加你的本地公网IP地址(可以通过搜索“我的IP”获取),如果只是测试的话,也可以临时输入
%允许所有IP访问(测试完成后记得改回具体IP,更安全) - 保存设置后,等待1-2分钟再尝试连接
2. 确认数据库用户的访问范围
你在PHPMyAdmin创建用户时,可能默认只给了本地(localhost)访问权限,需要调整:
- 登录PHPMyAdmin,找到
turboweb_jobsuser这个用户 - 点击“编辑权限”,把
Host字段改成%(允许所有IP)或者你的具体本地IP - 记得点击“执行”保存修改
3. 核实数据库主机地址是否正确
有时候网站的IP和MySQL服务器的IP可能不一样,很多主机商会把MySQL放在单独的服务器上:
- 登录cPanel,打开
MySQL Databases页面,里面会显示数据库的主机地址,可能不是你的网站IP,而是localhost或者专门的MySQL域名(比如mysql.yourhost.com) - 如果显示是
localhost,那说明MySQL和网站在同一服务器,但还是需要开启上面说的远程访问权限才能从外部连接
4. 测试网络连通性(排查端口是否被拦截)
在本地电脑的命令行里,用下面的命令测试端口是否能通:
# 用telnet测试 telnet 195.201.204.153 3306 # 或者用nc(如果安装了的话) nc -zv 195.201.204.153 3306
如果命令提示连接失败,那肯定是端口被防火墙拦截了——要么是主机商的防火墙没开3306端口,要么是你本地的网络(比如公司防火墙、家庭路由器)屏蔽了这个端口,这种情况可以联系主机商确认,或者换个网络试试。
三、代码的小优化(可选)
可以在连接时显式指定端口和超时时间,方便排查问题:
import pymysql.cursors import pymysql try: connection = pymysql.connect( host='195.201.204.153', user='turboweb_jobsuser', password='TYcfvA*****', db='turboweb_jobsdb_user', port=3306, # MySQL默认端口,若主机商改了就填对应端口 connect_timeout=10 # 设置10秒超时,避免长时间等待 ) print("Connected to:", connection.get_server_info()) except Exception as e: print('connection failed') print(e)
内容的提问来源于stack exchange,提问作者Sainita
相关产品推荐
相关产品推荐

