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

如何从另一私有子网的EC2实例访问私有子网中的RDS实例?

如何让同一VPC下不同私有子网的EC2实例访问RDS实例?

我之前处理过好多次这种跨私有子网的EC2-RDS访问场景,给你梳理一下核心配置步骤,确保能顺利打通:

1. 先确认基础网络归属

首先要再次核实:你的EC2和RDS确实处于同一个VPC中,并且RDS的DB子网组包含的子网都是该VPC下的私有子网(在RDS控制台的「连接与安全性」板块里查看「DB子网组」,点进去就能确认子网列表)。这点是基础,要是VPC不一样,后面配置再对也白搭。

2. 配置安全组(最容易出问题的环节)

安全组是VPC里的防火墙,必须双向放行流量:

  • RDS安全组的入站规则:
    • 最灵活的方式:添加一条入站规则,协议选TCP,端口填你的数据库端口(比如MySQL是3306,PostgreSQL是5432),源直接选择EC2实例所在的安全组ID。这样不管EC2实例的私有IP怎么变,只要它在这个安全组里,就能访问RDS。
    • 备选方式:如果不想用安全组做源,也可以指定EC2所在私有子网的CIDR段(比如10.0.1.0/24)作为源,同样开放对应端口。
  • EC2安全组的出站规则:
    默认安全组一般允许所有出站流量,如果你自定义过安全组,要确保有一条出站规则允许到RDS端口的TCP流量(或者直接放行所有出站,省事)。

3. 确认路由表配置

同VPC内的私有子网之间,默认是可以通过本地路由互通的,只要你的子网路由表没被改坏:

  • 检查EC2和RDS所在子网的路由表,确保里面有一条目标为VPC整体CIDR(比如10.0.0.0/16)、目标类型为local的路由。这条路由是VPC默认就有的,要是不小心删掉了,就会导致同VPC子网之间无法通信。

4. 测试连通性

登录到EC2实例,用命令先测网络通不通:

  • 用telnet测试:telnet your-rds-endpoint.rds.amazonaws.com 3306
  • 或者用nc命令:nc -zv your-rds-endpoint.rds.amazonaws.com 3306
    如果返回连通成功的提示,那接下来就可以用数据库客户端连接了;要是连不通,优先检查安全组规则,再核对路由表,最后确认RDS实例状态是available。

5. 额外踩坑提醒

  • RDS公有访问设置:一定要把RDS的「公有可访问性」设为否,毕竟都是私有子网,开公网访问既没必要又有安全风险。
  • 数据库内部权限:就算网络通了,还要确保数据库用户有从EC2所在子网访问的权限。比如MySQL里要执行:GRANT ALL ON your_db.* TO 'your_user'@'10.0.1.%' IDENTIFIED BY 'your_password';(把10.0.1.%换成EC2子网的CIDR前缀)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:12:35