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

同一VPC下EC2安全组作为RDS入站规则时PHP MySQLi连接失败咨询

问题原因分析

核心逻辑说明

AWS安全组之间的引用规则生效前提为:请求的源IP必须属于被引用安全组所关联的云资源的私网IP。你遇到的连接差异本质是:命令行发起的MySQL请求源IP符合规则匹配条件,PHP发起的请求源IP不符合,手动添加EC2私网IP到入站规则后直接放行该源IP,因此可以正常连通。

常见触发场景

  • EC2实例实际关联的安全组,和你添加到RDS入站规则里的EC2安全组不是同一个
    可以到EC2控制台查看实例的安全组配置,核对安全组ID是否完全一致,大量误操作会将非关联的安全组添加到RDS入站规则,导致引用规则直接失效。
  • PHP运行在Docker等容器环境中,默认网桥模式下流量做了SNAT转换
    直接在EC2宿主机执行mysql命令时,流量源IP是EC2的主私网IP,可以匹配安全组引用规则;如果PHP跑在默认bridge网络的Docker容器中,容器出站流量会被SNAT为Docker网桥的网关IP(通常为172.17.0.1这类地址),不属于EC2安全组关联的资源IP,导致规则匹配失败。
  • RDS安全组的引用规则配置有误
    核对RDS入站规则:是否正确放行了3306端口、协议是否为TCP、规则适用的IP类型是否和请求IP类型一致。
  • PHP请求默认走IPv6协议
    如果你的VPC开启了IPv6配置,PHP默认会优先使用IPv6地址发起请求,而RDS安全组的引用规则仅配置了IPv4的放行策略,导致匹配失败,添加EC2 IPv4私网地址后相当于单独放行IPv4流量,因此可以正常连通。

快速排查方法

在EC2上执行tcpdump -i any port 3306,分别抓取命令行连接和PHP连接的数据包,对比两者的源IP即可快速定位差异点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:54:03