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

使用PyMySQL连接AWS RDS数据库报连接超时错误求助

报错核心说明

你的报错属于MySQL连接超时错误,本质是你的本地机器网络无法和AWS RDS实例的3306端口建立TCP连接,和你写的Python连接代码逻辑本身无关,优先排查网络配置问题。

常见原因定位
  • RDS关联的安全组未放行入站3306端口请求
  • RDS实例部署在私有子网,没有公网路由可达
  • 公开访问配置未生效,或实例仍在修改配置的重启过程中
  • 本地网络/运营商/防火墙封禁了3306端口的出站请求
  • RDS端点、端口配置错误,或实例要求SSL连接未在代码中配置
  • VPC网络ACL拦截了3306端口的流量
分步解决方案
  1. 先做连通性验证
    本地终端执行命令测试端口可达性:
telnet <替换为你的RDS实例端点> 3306

如果返回连接失败,直接走网络排查步骤;如果连接成功,走代码参数修正步骤。
2. 安全组配置排查
登录AWS控制台进入RDS实例详情页,找到关联的安全组,编辑入站规则:

  • 类型选择MySQL/Aurora
  • 端口范围默认填3306
  • 源地址填你当前本地的公网IP(可通过公网搜索「我的IP」获取)
    保存规则后等待1分钟重试连接。临时测试可将源地址设为0.0.0.0/0验证是否为IP限制问题,验证完成后务必改回指定IP,避免安全风险。
  1. RDS网络属性验证
  • 确认RDS实例的「公开可访问」属性为是
  • 确认RDS所在子网为公有子网:对应子网的路由表存在0.0.0.0/0路由指向互联网网关
  • 确认RDS实例状态为可用,没有处于重启、修改配置的过程中
  • 如果修改过RDS的默认端口,需要在连接代码中显式指定port参数
  1. 本地网络排查
    切换网络环境(比如用手机热点)重试连接,如果切换后可以正常连接,说明原局域网的防火墙/运营商封禁了3306端口,联系网络管理员放行即可。
  2. 代码参数修正
    如果RDS要求SSL连接(AWS RDS默认开启SSL验证),需要在连接代码中添加SSL配置,完整示例如下:
import pymysql

connection = pymysql.connect(
    host=host,
    user=user,
    password=psswd,
    database=db_name,
    port=3306, # 非默认端口替换为实际端口
    connect_timeout=10,
    # 开启SSL的场景添加下面一行,证书可从AWS RDS控制台下载
    ssl={'ca': 'global-bundle.pem'}
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:27:03