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

前提条件

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

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

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
  2. 在左侧导航栏中单击账号管理,然后在用户账号页签中单击自定义权限按钮,打开数据管理DMS 5.0
    自定义权限
  3. 在DMS左侧的实例列表中,右键单击目标实例,从弹出的列表中选择账号管理
  4. 单击左上角的创建用户按钮或单击已有账号对应操作列的编辑
  5. 基本设置页签配置主机参数。创建用户界面
    说明
    • 主机表示允许账号从哪些IP地址访问数据库,多个IP地址使用逗号(,)分隔。如果不填该配置项,表示不指定账号从特定IP地址访问数据库,系统的默认值为%
    • 主机填写的IP地址需要在RDS白名单中同步添加,具体方法请参见通过客户端、命令行连接RDS MySQL实例
    • 数据管理DMS中还支持设置更多账号权限,具体请参见MySQL数据库用户权限管理
  6. 单击确认
  7. 预览SQL窗口,单击确认
    说明 管控模式为安全协同的数据库实例会受安全规则限制,如无法执行请根据界面提示信息进行操作,或联系DBA、管理员进行确认。

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

  1. 通过客户端、命令行连接RDS MySQL
  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`.`help_topic` TO 'test001'@'42.120.XX.XX';
    GRANT SELECT ON `mysql`.`func` TO 'test001'@'42.120.XX.XX';
    GRANT SELECT ON `mysql`.`time_zone` TO 'test001'@'42.120.XX.XX';
    GRANT SELECT ON `mysql`.`slow_log` TO 'test001'@'42.120.XX.XX';
    GRANT SELECT ON `mysql`.`time_zone_transition` TO 'test001'@'42.120.XX.XX';
    GRANT SELECT ON `mysql`.`event` TO 'test001'@'42.120.XX.XX';
    GRANT SELECT ON `mysql`.`proc` TO 'test001'@'42.120.XX.XX';
    GRANT SELECT ON `mysql`.`help_category` TO 'test001'@'42.120.XX.XX';
    GRANT SELECT ON `mysql`.`help_relation` TO 'test001'@'42.120.XX.XX';
    GRANT SELECT ON `mysql`.`help_keyword` TO 'test001'@'42.120.XX.XX';
    GRANT SELECT ON `mysql`.`general_log` TO 'test001'@'42.120.XX.XX';
    GRANT SELECT ON `mysql`.`time_zone_leap_second` TO 'test001'@'42.120.XX.XX';
    GRANT SELECT ON `mysql`.`time_zone_transition_type` TO 'test001'@'42.120.XX.XX';
    GRANT SELECT ON `mysql`.`time_zone_name` 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`;