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

如何让AWS RDS与EC2实例通信?连接故障排查求助

解决EC2(Docker Compose)无法连接同一VPC内AWS RDS的问题

首先明确:AWS RDS默认禁用ICMP请求(即ping),所以ping xxxxxx.rds.amazonaws.com无响应是正常现象,不用纠结这个,重点用TCP端口测试工具验证3306端口的连通性。下面是按优先级排序的检查项:

1. 修正安全组的规则方向(最可能的问题)

你当前的EC2关联的安全组规则方向搞反了:

  • EC2的ec2-rds-1安全组:允许向RDS的3306端口出站——这个是对的,但要确认目标是RDS实例的安全组(或RDS的私网IP),协议为TCP。
  • EC2的rds-ec2-1安全组:允许来自RDS的3306入站——这个完全没必要,不是RDS连接需要的配置。

真正需要配置的是RDS实例关联的安全组:

  • 给RDS的安全组添加一条入站规则:来源选择EC2实例的安全组(比如ec2-rds-1),端口3306,协议TCP。
  • 这条规则的意思是:允许来自EC2安全组的所有实例访问RDS的MySQL端口。

2. 验证EC2的出站规则有效性

检查ec2-rds-1安全组的出站规则:

  • 确认规则是允许TCP 3306端口,目标可以是RDS的安全组(推荐)、RDS的私网IP,或者临时用0.0.0.0/0(测试用,后续再收紧)。
  • 如果出站规则只允许到特定IP,要确保RDS的私网IP在范围内。

3. 检查RDS的网络基础配置

  • 确认RDS实例的状态是Available(控制台首页就能看到),如果是Creating、Backing up等状态,无法正常连接。
  • 确认RDS和EC2在同一VPC的子网中(你已经提到这点,但再核对下RDS的子网组是否包含EC2所在的子网或同VPC的子网)。
  • 如果RDS设置为“公开访问”,确保EC2有公网IP或通过NAT网关访问公网;但同一VPC下推荐用“私有访问”,更安全且避免公网延迟。

4. 验证VPC路由表

同一VPC内的子网默认互通,但如果自定义过路由表:

  • 检查EC2所在子网的路由表,是否存在阻止内部子网通信的规则(比如没有指向本地VPC的路由10.0.0.0/8或对应VPC CIDR的路由)。
  • 检查RDS所在子网的路由表,同样确保允许和EC2子网的通信。

5. Docker容器层面的网络排查

如果EC2主机能连通RDS,但Docker容器不行:

  • 在EC2主机上先测试连通性:执行telnet xxxxxx.rds.amazonaws.com 3306或nc -zv xxxxxx.rds.amazonaws.com 3306,确认主机能正常连接。
  • 进入Docker容器(docker exec -it <容器名> bash),测试DNS解析:nslookup xxxxxx.rds.amazonaws.com,看是否能解析到RDS的私网IP。
  • 检查Docker Compose的网络配置:如果用默认bridge模式,确认容器的出站规则没有被限制;可以临时改用network_mode: host(不推荐生产用,仅测试),看容器是否能连接RDS,以此判断是否是Docker网络的问题。

6. RDS MySQL的权限配置

  • 确认MySQL用户的连接权限:比如你创建的用户是否允许从EC2的私网IP或VPC CIDR段连接。执行以下SQL(通过RDS控制台的查询编辑器或本地客户端连接后):
    SELECT user, host FROM mysql.user;
    
    如果用户的host是localhost或特定IP,而不是EC2的IP或%(临时测试用),需要修改权限:
    GRANT ALL ON your_database.* TO 'your_user'@'EC2_PRIVATE_IP' IDENTIFIED BY 'your_password';
    FLUSH PRIVILEGES;
    
  • 检查RDS参数组:确认skip-networking参数是OFF,bind-address没有限制特定IP(默认是允许所有)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:40:44