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

Python连接远程MySQL报错:Can't connect to MySQL server on 'localhost:3306'(10061)

排查远程MySQL连接失败(2003错误)的常见问题

你遇到的2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (10061)错误,核心是TCP连接无法建立,即使添加了远程IP白名单,还有以下几个关键排查点:

1. 修正host参数,不要用网站域名或留空

很多托管商的MySQL服务器地址和网站域名不是同一个,你填网站域名或者留空host,驱动会默认尝试连接localhost,这就是报错里显示localhost:3306的原因。

  • 去虚拟主机控制面板找到专属的MySQL数据库主机地址(通常类似db.yourhost.com、mysql123.hostingprovider.net或内部IP),把这个地址填到host参数里,不要留空。

2. 确认MySQL端口是否非默认3306

部分托管商会修改MySQL默认端口,若你的托管商使用了其他端口,需要在连接参数中明确指定:

import mysql.connector

try:
    db = mysql.connector.connect(
        host="正确的数据库主机地址",
        port=3307,  # 替换为托管商提供的端口号
        user="你的数据库用户名",
        password="你的数据库密码",
        database="你的数据库名"
    )
    print("Connection successful!")
except mysql.connector.Error as err:
    print(f"Error: {err}")

3. 验证本地网络能否访问数据库端口

用命令行工具测试网络连通性:

  • 执行telnet 数据库主机地址 端口号,如果提示无法连接,说明:
    • 本地防火墙(Windows防火墙、杀毒软件)拦截了出站请求,需要添加MySQL端口的放行规则;
    • 托管商的服务器防火墙未开放对应端口,联系托管商确认。

4. 确认MySQL用户的远程访问权限

即使添加了IP到远程主机列表,部分托管商的MySQL用户默认仅允许服务器内部访问,需要确认用户权限是你的用户名@你的本地IP或者你的用户名@%(允许所有远程IP)。可以通过虚拟主机的数据库管理工具(如phpMyAdmin)查看权限,或直接联系托管商核实。

5. 检查是否需要强制SSL连接

部分托管商要求远程MySQL连接必须使用SSL,此时需在连接参数中启用SSL:

db = mysql.connector.connect(
    host="正确的数据库主机地址",
    user="你的数据库用户名",
    password="你的数据库密码",
    database="你的数据库名",
    ssl_disabled=False  # 启用SSL
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:22:37