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

Python连接Azure Database for MySQL失败(错误2003/10060)求助

解决Azure Database for MySQL连接错误2003 (HY000): Can't connect to MySQL server (10060)

针对你遇到的连接问题,按优先级给出以下排查和解决步骤:


1. 修复代码中的端口配置错误

你的代码中'port': port的port变量未赋值,Azure Database for MySQL默认端口为3306,直接替换为数值即可:

'port': 3306,  # 替换原未定义的port变量

2. 验证Azure MySQL防火墙规则

  • 登录Azure门户,进入你的MySQL服务器,打开「连接安全性」页面
  • 确认已将当前客户端的公网IP添加到「允许访问的IP地址」列表;测试阶段可临时开启「允许所有Azure服务访问」(生产环境需关闭)
  • 检查是否开启了「拒绝公共网络访问」,该选项会阻止外部连接,需调整为「允许」

3. 修正用户名格式

Azure MySQL的用户名必须包含服务器前缀,格式为 <username>@<serv_name>,补充后示例:

'user':'<username>@<serv_name>',  # 不要遗漏@<serv_name>部分

4. 确认SSL证书有效性

  • 从你的目录截图看,证书文件已存在,需确保文件名完全匹配DigiCertGlobalRootG2.crt.pem(注意大小写和后缀)
  • 如果路径仍有问题,可直接将证书内容作为字符串传入:下载官方证书文本后,将ssl_ca的值替换为证书内容(需保留完整的PEM格式)

5. 测试网络连通性

  • 使用命令行测试端口是否可达:
    # Windows PowerShell
    Test-NetConnection <serv_name>.mysql.database.azure.com -Port 3306
    
    # Linux/macOS
    telnet <serv_name>.mysql.database.azure.com 3306
    
  • 如果连接失败,说明本地防火墙、代理服务器或网络运营商阻止了3306端口的出站请求,需对应调整网络规则

修正后的代码示例

from azure.storage.blob import BlobServiceClient
import pandas as pd
import time
import mysql.connector
from mysql.connector import errorcode

config = {
  'host':'<serv_name>.mysql.database.azure.com',
  'user':'<username>@<serv_name>',
  'password':'<password>',
  'database':'<db_name>',
  'port': 3306,
  'ssl_disabled': False,
  'client_flags': [mysql.connector.ClientFlag.SSL],
  'ssl_ca': 'DigiCertGlobalRootG2.crt.pem'
}

try:
   conn = mysql.connector.connect(**config)
   print("Connection established")
except mysql.connector.Error as err:
  if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
    print("用户名或密码错误")
  elif err.errno == errorcode.ER_BAD_DB_ERROR:
    print("数据库不存在")
  else:
    print(err)
else:
  cursor = conn.cursor()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 16:22:21