全部产品
Search
文档中心

云数据库 RDS:指定账号从特定IP地址访问数据库

更新时间:Jul 28, 2023

RDS白名单设置适用于所有账号,无法根据账号来限制IP地址的访问。在安全性上有较大缺陷。本文介绍如何指定账号从特定的IP地址访问数据库。

前提条件

已创建高权限账号,创建方法,请参见创建高权限账号

注意事项

  • 通过本文的操作步骤为账号指定IP地址后,再通过控制台或者API接口管理该账号(删除账号、修改账号密码等)可能会引发故障,建议后期统一使用DMS或者SQL命令管理该账号。

  • 数据库中如果存在用户名相同且绑定的主机IP等价(例如192.168.%和192.168.%.%)的账号,系统无法保证鉴权顺序,可能导致访问异常。例如数据库中存在user@192.168.%user@192.168.%.%两个账号,当您使用其中一个账号登录时,系统会随机选择一个账号进行鉴权,如果两个账号的密码或权限各不相同,则可能会出现无法登录、或登录后权限不一致的问题。因此,应尽量避免上述情况。

使用SQL命令设置账号从特定IP地址访问数据库

  1. 通过客户端、命令行连接RDS

  2. 通过以下命令创建新账号并授权管理数据库,允许账号通过某IP地址访问数据库,此账号在控制台上无法查看到所属数据库

    创建新账号test001并授权管理rds001数据库,允许从42.120.XX.XX访问数据库。

    CREATE USER `test001`@`42.120.XX.XX`IDENTIFIED BY 'passwd';
    GRANT PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'test001'@'42.120.XX.XX';
    GRANT ALL PRIVILEGES ON `rds001`.* TO 'test001'@'42.120.XX.XX';
    GRANT SELECT ON mysql.* TO 'test001'@'42.120.XX.XX';
    说明
    • 如果将所有的42.120.XX.XX更改为%,就和通过控制台创建的账号相同,也可以在控制台看见此账号的所属数据库

    • 如果想要修改IP为42.121.XX.XX,可以使用如下命令:

      RENAME USER `test001`@`42.120.XX.XX` TO `test001`@`42.121.XX.XX`;