当您的本地公网IP地址经常变动时,可能会因为白名单问题导致连接数据库异常。本文介绍RDS MySQL/MariaDB TX如何定位公网IP地址。

问题描述

  • 已经将本地设备的公网IP地址添加到RDS白名单,但是仍然无法访问RDS实例,而其他设备能访问该RDS实例。
  • 已经将本地设备的公网IP地址添加到RDS白名单,但是仍然无法访问RDS实例,而将RDS白名单设置为公司的网段或者0.0.0.0/0后,该设备可以访问RDS实例。
以上的任意一种情形,都很可能是因为您添加到白名单的本地设备公网IP地址不正确,本文介绍如何查询到本地设备的真实本地公网IP地址。
说明 本文只适用于ECS以外的设备访问RDS实例的情况。如果是ECS实例访问RDS实例,可以在ECS实例的详情页面查看准确的公网IP地址和内网IP地址。

注意事项

如果您发现您本地设备的公网IP地址会变化,而且建立的连接是用于生产环境,则建议您改为使用内网连接,或者在白名单中配置合理的公网IP段,确保不会因为IP地址改变而断连。

定位本地设备的公网IP地址

  1. 将公司的公网网段或者0.0.0.0/0添加到RDS MySQL或MariaDB TX实例的白名单,具体操作请参见设置白名单
    说明 0.0.0.0/0表示允许任何设备访问RDS实例,有安全风险,请谨慎使用。如果使用,应当及时从白名单中删除。
  2. 在本地设备,使用客户端或命令行连接到RDS实例。
    mysql -hRDS连接地址 -u账户 -p密码 -P3306
  3. 查询进程信息。
    show processlist

    如下图所示, show processlist 所在的行对应的 Host 就是本地设备的真实出口 IP 地址。

  4. 将步骤 1中在白名单中添加的 0.0.0.0/0 条目删除,添加上真实的本地公网IP。

常见问题

  • 如何确定是本地公网IP地址变动导致无法连接数据库?

    将0.0.0.0/0添加到RDS MySQL或MariaDB TX实例的白名单中,等待1分钟左右,此时任何设备都可以访问RDS实例。如果测试可以正常连接数据库,请将0.0.0.0/0从白名单中删除,然后添加本地IP地址再进行测试,如果无法连接就代表您当前的本地公网IP地址不是您之前填写的IP地址。

  • 设置了白名单为什么还是不行?

    如果确认是本地公网IP地址变动导致的白名单问题,请等待1分钟左右,这是因为设置白名单后需要等待1分钟左右才会生效。

    除了白名单之外,还有很多因素会导致您无法连接数据库,详情请参见解决无法连接实例问题