在您通过公网访问RDS MySQL或MariaDB前,需要将本地设备或外部服务器的公网IP地址添加到RDS白名单中。本文介绍如何确定公网IP地址。
问题描述
已经将本地IP地址添加到白名单中,但仍然无法连接。
以上很可能是因为您的公网IP地址不正确,或者本地公网IP地址发生变动。
本文只适用于ECS以外的设备访问RDS实例的情况。如果是ECS实例访问RDS实例,可以在ECS实例的详情页面查看准确的公网IP地址和内网IP地址。
前提条件
通过公网连接 RDS 实例前,请确认以下条件:
-
已申请公网地址:RDS 实例必须已开通公网连接地址(域名形式,如
rm-bp1xxxxx.mysql.rds.aliyuncs.com)。内网地址无法用于外网连接。若未开通,请在 RDS 控制台的数据库连接页面申请公网地址。 -
正确理解白名单 IP:白名单中应填写客户端(本地设备)的公网出口 IP,而非 RDS 实例的域名或 IP 地址。
注意事项
如果您发现您本地设备的公网IP地址会变化,而且建立的连接是用于生产环境,则建议您改为使用内网连接,或者在白名单中配置合理的公网IP段,确保不会因为IP地址改变而断连。
定位本地设备的公网IP地址
-
临时添加白名单。
将公司的公网网段或者0.0.0.0/0添加到RDS MySQL或MariaDB实例的白名单。
警告0.0.0.0/0表示允许任何设备访问RDS实例,有安全风险,请谨慎使用。完成测试后必须立即删除。
-
获取公网IP(任选一种方式)。
-
方案一(推荐):通过
curl ipinfo.io/ip查询本地客户端公网IP。说明如果连接仍存在异常,再通过
curl ifconfig.me查询公网IP。 -
方法二:通过浏览器查询(适合 Windows 等图形化界面用户)
在浏览器中访问以下任一网站,页面将直接显示您的本地公网出口 IP 地址:
将显示的 IP 地址添加至 RDS 实例的白名单中。
-
方法三:通过 SQL 查询获取真实出口 IP
按以下步骤操作:
-
临时将白名单设置为
0.0.0.0/0,等待约 1 分钟生效。 -
使用 mysql 客户端从本地连接 RDS 实例:
mysql -h<公网地址> -u<用户名> -p<密码> -P3306 -
连接成功后执行以下命令:
SHOW FULL PROCESSLIST; -
在结果中找到当前连接会话(Info 列显示
show full processlist或对应 User 的行),其 Host 列显示的即为客户端真实出口 IP(格式为IP:Port,如120.xx.xx.xx:52861)。 -
提取该 IP 地址,添加到 RDS 实例白名单中,并移除
0.0.0.0/0条目。 -
断开连接后重新连接,验证白名单配置正确。
-
-
-
更新白名单。
-
删除白名单中的0.0.0.0/0。
-
添加步骤2获取的真实公网IP。
-
常见问题
-
如何确定是本地公网IP地址变动导致无法连接数据库?
将0.0.0.0/0添加到RDS MySQL或MariaDB实例的白名单中,等待1分钟左右,此时任何设备都可以访问RDS实例。如果测试可以正常连接数据库,请将0.0.0.0/0从白名单中删除,然后添加本地IP地址再进行测试,如果无法连接,则代表您当前的本地公网IP地址不是您之前填写的IP地址。
-
设置了白名单为什么还是不行?
如果确认是本地公网IP地址变动导致的白名单问题,请等待1分钟左右,这是因为设置白名单后需要等待1分钟左右才会生效。
除了白名单之外,还有很多因素会导致您无法连接数据库,详情请参见解决无法连接实例问题。
-
能 Ping 通 RDS 地址或 Telnet 端口通,但数据库客户端(如 Navicat)仍无法连接?
-
Ping 通不代表数据库授权通过:RDS 默认不禁止 Ping,能 Ping 通仅表示网络层可达,不代表数据库服务授权您的 IP 访问。
-
Telnet 通仅代表 TCP 端口连通:端口 3306 连通只说明网络和端口正常,但数据库层面的白名单验证是独立的。
-
核心原因:客户端 IP 未加入白名单,或白名单中的 IP 不是实际的公网出口 IP。
-
解决方法:
-
通过
SHOW PROCESSLIST获取数据库看到的真实连接 IP(参见上文"方法三")。 -
将该 IP 添加到白名单。
-
同时检查数据库客户端(如 Navicat)的连接参数:公网地址、端口(默认 3306)、账号密码是否正确。
-
-
-
RDS 连接日志或 Processlist 中显示的 IP 地址与本地查询的 IP 不一致(如显示为海外 IP 或陌生 IP)?
原因:如果本地网络通过公司网关统一出口(NAT),数据库看到的将是网关的公网 IP,而非本机 IP。
解决方法:以数据库中
SHOW PROCESSLIST显示的 Host IP 为准进行白名单配置,不要依赖本机查询到的 IP。
跨境/跨地域访问说明
-
国内外服务器均可通过 RDS 公网地址+白名单方式访问 RDS 实例,无地域限制。
-
如果对网络延迟和安全性要求较高,或需实现多地数据共享,建议:
-
使用云企业网(CEN)实现 VPC 内网互通,避免公网暴露。
-
使用数据传输服务(DTS)进行跨地域数据同步。
-
-
单纯依赖公网访问可能受跨境网络波动影响,建议生产环境优先使用内网方案。