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
相关产品推荐
相关产品推荐

