使用MySQL Workbench连接AWS RDS实例超时问题排查请求
确认本地公网IP的准确性
多数ISP会动态分配公网IP,你在安全组中配置的IP可能已发生变化。执行curl ifconfig.me获取当前真实公网IP,对比安全组规则是否完全匹配(需使用CIDR格式,比如123.45.67.89/32而非单纯填写IP)。检查VPC网络ACL规则
VPC网络ACL是无状态的,需同时配置入站和出站规则:- 入站:允许你的公网IP/32访问3306端口
- 出站:允许RDS实例所在子网的IP范围,向你的公网IP/32返回流量(可配置允许所有出站,或指定对应端口范围)
不少场景会忽略出站规则,导致请求发出后无法收到响应。
验证RDS所在公有子网的路由表
确认该子网的路由表已关联互联网网关(IGW),且存在0.0.0.0/0指向IGW的路由条目。若路由表配置错误,RDS实例无法与外部网络建立通信。检查RDS端点的DNS解析
在本地执行nslookup <你的RDS端点>,确认解析出的IP为RDS实例的公网IP,且该IP属于你配置的公有子网范围。若解析异常,可尝试刷新本地DNS缓存:Windows用ipconfig /flushdns,Linux/macOS用sudo systemd-resolve --flush-caches。排查本地NAT或代理场景
若本地机器通过NAT网关或代理上网,安全组中应配置NAT/代理的公网IP,而非本地内网IP。curl ifconfig.me返回的IP即为实际对外的出口IP,以此为准配置安全组规则。检查RDS参数组配置
确认参数组中的bind-address设置为0.0.0.0(允许所有IP访问),若设置为特定IP,即使安全组放行,RDS也会拒绝连接请求。测试端口连通性
使用telnet <RDS端点> 3306或nc -zv <RDS端点> 3306测试端口连通性,根据报错定位问题:- 显示“Connection timed out”:大概率是安全组、ACL、路由等网络层面问题
- 显示“Connection refused”:可能是RDS实例未正常运行,或参数组限制了访问
内容的提问来源于stack exchange,提问作者Zaga88

