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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:00:56