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

无法通过Flask-SQLAlchemy连接AWS RDS MySQL数据库求助

解决AWS RDS MySQL连接超时问题

针对你遇到的sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on ... (timed out)")错误,以下是具体排查和解决步骤:

1. 修正数据库URI拼写错误

对比错误信息里的RDS端点choiceconnect-database<DB_ID>.us-east-2.rds.amazonaws.com,你的配置URI多了一个多余的点:choiceconnect-database.<DB_ID>.us-east-2.rds.amazonaws.com。这个错误会导致域名解析失败,直接引发超时。修正后的URI应为:

SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://username:password@choiceconnect-database<DB_ID>.us-east-2.rds.amazonaws.com:3306/choiceconnect-database'

2. 测试网络连通性

先排除网络层面的问题:

  • 使用telnet测试端口连通性:
    telnet choiceconnect-database<DB_ID>.us-east-2.rds.amazonaws.com 3306
    
  • 或者用nc命令(若系统支持):
    nc -zv choiceconnect-database<DB_ID>.us-east-2.rds.amazonaws.com 3306
    

如果命令返回无法连接,说明网络不通,继续排查以下项:

3. 检查AWS网络配置细节

  • NACL(网络访问控制列表):RDS所在子网的NACL需要同时允许入站3306端口和出站响应流量(1024-65535端口),NACL是双向规则,缺一不可。
  • VPC路由表:确认路由表中有指向互联网的网关(IGW),且RDS实例在控制台设置中勾选了**"Publicly accessible"**(因为你的Flask应用在本地运行)。
  • RDS实例状态:在AWS控制台确认RDS实例处于**可用(Available)**状态,而非创建中、重启或维护状态。

4. 排查本地环境限制

  • 关闭本地防火墙、杀毒软件,重新测试连接。
  • 切换到手机热点等其他网络,排除公司/家庭网络网关限制出站3306端口的可能。

5. 验证数据库凭证格式

如果用户名或密码包含特殊字符(如@、#、/),需要进行URL编码:

  • 例如密码中的@替换为%40,#替换为%23,确保URI解析正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:06:13