RDS白名单设置适用于所有账号,无法根据账号来限制IP地址的访问。在安全性上有较大缺陷。本文介绍如何指定账号从特定的IP地址访问数据库。
前提条件
已创建高权限账号,创建方法,请参见创建高权限账号。
使用DMS设置账号从特定IP地址访问数据库
- 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
- 在左侧导航栏中单击账号管理,然后在用户账号页签中单击自定义权限按钮,打开数据管理DMS 5.0。
- 在DMS左侧的实例列表中,右键单击目标实例,从弹出的列表中选择账号管理。
- 单击左上角的创建用户按钮或单击已有账号对应操作列的编辑。
- 在基本设置页签配置主机参数。
说明
- 主机表示允许账号从哪些IP地址访问数据库,多个IP地址使用逗号(,)分隔。如果不填该配置项,表示不指定账号从特定IP地址访问数据库,系统的默认值为
%
。 - 主机填写的IP地址需要在RDS白名单中同步添加,具体方法请参见设置IP白名单。
- 数据管理DMS中还支持设置更多账号权限,具体请参见MySQL数据库用户权限管理。
- 主机表示允许账号从哪些IP地址访问数据库,多个IP地址使用逗号(,)分隔。如果不填该配置项,表示不指定账号从特定IP地址访问数据库,系统的默认值为
- 单击确认。
- 在预览SQL窗口,单击确认。
说明 管控模式为安全协同的数据库实例会受安全规则限制,如无法执行请根据界面提示信息进行操作,或联系DBA、管理员进行确认。
使用SQL命令设置账号从特定IP地址访问数据库
- 通过客户端、命令行连接RDS MySQL。
- 通过以下命令创建新账号并授权管理数据库,允许账号通过某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.120.74.120,可以使用如下命令:
RENAME USER `test001`@`42.120.XX.XX` TO `test001`@`42.121.XX.XX`;