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

Symfony连接AWS RDS报SQLSTATE[HY000] [2002]连接被拒绝如何解决?

解决方案

1 优先修正配置错误

你的doctrine.yaml中存在端口硬编码问题,直接覆盖了services.yaml中读取环境变量的配置:

# doctrine.yaml中错误的硬编码配置
port: 3306
# 修改为读取环境变量
port: '%env(RDS_PORT)%'

如果你的RDS实例未使用默认3306端口,该问题会直接导致连接失败。

2 RDS侧配置排查

  • 确认RDS实例已开启公开访问(本地开发场景下必须开启,VPC内部部署可关闭)
  • 确认RDS绑定的安全组入站规则已开放对应数据库端口的TCP流量,源地址为你当前客户端的公网IP(本地开发)或所属VPC的网段/关联资源的私有IP(AWS内部部署)

3 网络连通性校验

先跳过Symfony框架,直接用命令行工具验证网络可达:

# 用mysql客户端测试连接,替换对应参数
mysql -h <RDS_HOSTNAME> -P <RDS_PORT> -u <RDS_USERNAME> -p

如果命令行无法连接,说明是网络层面问题,和Symfony配置无关,优先解决网络连通性。

4 本地环境校验

  • 确认PHP已安装启用pdo_mysql扩展,执行命令验证:php -m | grep pdo_mysql,无输出则需先安装启用对应扩展
  • 确认无DATABASE_URL环境变量冲突:Doctrine配置注释明确说明,如果存在DATABASE_URL配置,会覆盖所有单独的连接参数,如果你.env或其他配置文件中有旧的DATABASE_URL配置,优先删除或更新为正确值
  • 执行Symfony命令校验最终加载的配置:php bin/console debug:config doctrine,确认dbal连接的host、port、用户名、密码均和预期一致

5 AWS内部部署特殊排查(部署在EC2/ECS等AWS服务场景)

  • 确认部署资源和RDS实例在同一个VPC,或VPC对等连接、路由表配置正常
  • 确认部署资源的安全组出站规则允许到RDS端口的TCP流量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 07:45:02