阿里云 RDS MySQL 连接报错 2003 (10060) 表示客户端与数据库之间的网络连接超时,通常由白名单未放行或连接地址错误导致。最推荐的处理方向是先在 RDS 控制台检查白名单设置,再确认使用的是内网还是外网连接地址。
先说结论:这是网络层连通性问题,优先排查安全策略和连接地址配置。
- 先确认:客户端公网 IP 是否已加入 RDS 实例白名单
- 先处理:区分内网地址与外网地址的适用场景
- 再验证:使用 telnet 命令测试 3306 端口连通性
命令速用版
在客户端机器上执行以下命令,快速判断网络链路状态。
telnet <RDS 连接地址> 3306
ping <RDS 连接地址>
如果 telnet 不通但 ping 通,说明端口被防火墙或安全组拦截;如果 ping 不通,说明路由不可达或实例未启动。
为什么会这样
报错 10060 本质是 TCP 三次握手失败,客户端发出的 SYN 包没有收到服务端的 ACK 响应。阿里云 RDS 默认开启网络隔离,未在白名单内的 IP 发起的连接请求会被底层安全策略直接丢弃,导致客户端等待超时。此外,内网地址只能在同地域 VPC 内的 ECS 使用,公网环境使用内网地址也会直接超时。
分步处理
按顺序执行以下操作,每一步完成后需立即验证,避免多变量干扰。
1. 获取客户端出口 IP
适用场景:所有远程连接场景。操作动作:在客户端浏览器访问 ipinfo.io 或在命令行执行 curl ifconfig.me。风险边界:注意 NAT 网关或代理出口 IP 可能与本地本机 IP 不同,需以实际出口 IP 为准。
2. 配置 RDS 白名单
适用场景:IP 未在允许列表中。操作动作:登录阿里云 RDS 控制台,进入实例详情,找到“白名单设置”,将上一步获取的 IP 加入默认分组。风险边界:不要随意添加 0.0.0.0/0,这会开放公网访问权限,增加安全风险。
3. 核对连接地址类型
适用场景:客户端与 RDS 不在同一 VPC 或地域。操作动作:确认连接字符串中的 Host 是“外网地址”还是“内网地址”。如果在本地电脑连接,必须使用外网地址;如果在同地域 ECS 连接,建议使用内网地址。风险边界:内网地址在公网环境无法解析或路由不可达。
4. 检查本地防火墙
适用场景:Windows 或开启了安全软件的客户端。操作动作:检查本地出站规则是否阻止了 3306 端口。风险边界:部分企业网络会统一封锁数据库端口,需联系网络管理员。
怎么验证是否生效
执行 telnet 命令后,如果屏幕变为空白或显示 Connected,表示端口连通。随后使用 MySQL 客户端工具尝试登录,若不再报错 2003 且能进入 MySQL 提示符,说明问题解决。如果仍然报错,查看 RDS 控制台“监控信息”中的“连接数”是否有波动,若无波动说明请求未到达实例。
常见坑
- 白名单格式错误:IP 地址需为标准 IPv4 格式,带掩码时需正确书写,如 192.168.1.1/24。
- VPC 网络隔离:即使在同一地域,不同 VPC 的 ECS 默认无法通过内网互通,需建立对等连接或使用云企业网。
- 实例状态异常:实例处于“锁定”或“维护”状态时也会连接失败,需在控制台确认实例状态为“运行中”。
- DNS 解析问题:偶尔出现域名解析失败,可尝试直接使用 IP 地址连接测试。
常见问题
连接 RDS 必须申请公网 IP 吗?
不一定。如果客户端是阿里云同地域 ECS,使用内网地址更快且免费;如果是在本地电脑或其他云厂商,必须申请外网地址。
白名单可以填 0.0.0.0/0 吗?
技术上可以,但强烈不建议。这会允许任何 IP 尝试连接数据库,极大增加被暴力破解的风险,仅建议在临时调试且安全组有其他限制时使用。
为什么加了白名单还是连不上?
可能是本地网络运营商封锁了 3306 端口,或者客户端出口 IP 发生了变化(如动态 IP),需确认当前实际出口 IP 是否与白名单一致。
参考来源
- 阿里云帮助中心 - 设置白名单,URL: https://help.aliyun.com
- 阿里云帮助中心 - 连接 RDS MySQL 实例,URL: https://help.aliyun.com