RDS MySQL支持通过validate_password
插件自定义密码策略,以增强数据库访问的安全性。您可以修改密码复杂度校验规则,包括密码长度、密码检测强度等。
功能介绍
RDS MySQL支持通过validate_password
插件精细控制数据库账号密码的复杂度要求:
是否允许密码与数据库账号名相同
密码最小长度
需包含大写和小写字母的最小个数
需包含数字的最小个数
需包含特殊字符的最小个数
密码强度检测策略
前提条件
RDS MySQL实例版本需为5.7或8.0。
注意事项
主节点的
validate_password
插件安装不会自动同步至备节点对于主备架构实例(高可用系列、集群系列),validate_password插件需在主节点和备节点分别手动安装, 可通过手动切换主备操作登录备节点安装。若仅在主节点安装,后续发生主备切换后新主节点(原备节点)将缺失该插件,导致密码策略失效。
说明插件安装后,通过RDS控制台配置的密码策略参数会自动同步至备节点,无需重复设置。
核心参数限制及系统处理
length
必须大于或等于number_count + (2 * mixed_case_count)+ special_char_count
,若任意一个值导致不符合上述要求,RDS会自动将length
调整为等于该计算式的结果。RDS强制规则
无论自定义策略如何设置,通过RDS控制台或API(CreateAccount/ResetAccountPassword)创建或修改密码时,密码始终遵循:
长度为8~32个字符。
包含大写字母、小写字母、数字、特殊字符(
!@#$%^&*()_+-=
)中的至少三种。
绕过密码最小长度为8的强制限制(不推荐)
参数值调整无法绕过RDS控制台的强制校验,即使将密码最小长度设为5,创建或修改密码时仍需输入至少8个字符。
如需设置少于8个字符的密码,可通过
SET PASSWORD
命令绕过RDS控制台的强制校验限制,直接设置为5字符密码。此方法仅适用于测试环境或特殊场景,生产环境不建议使用。
费用说明
自定义密码策略功能免费使用。
步骤一:安装validate_password
插件
使用高权限账号连接MySQL实例。
执行如下SQL命令,安装
validate_password
插件。INSTALL PLUGIN validate_password SONAME 'validate_password.so';
执行如下SQL命令,验证插件是否安装成功。
SHOW GLOBAL VARIABLES LIKE 'validate_password%';
出现类似下图的返回结果即表示插件安装成功。
步骤二:修改密码策略参数
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏中单击参数设置。
根据设置实例参数文档,搜索并修改
loose_validate_password
系列参数。说明修改参数前,请确保已完成validate_password插件的安装,否则修改的参数不会生效。
参数名
支持的数据库版本
说明
配置示例(5.7版本)
loose_validate_password_check_user_name
5.7
是否允许密码和账号名一致。取值:
ON(默认值):允许。
OFF:不允许。
OFF:禁止密码与用户名相同。
loose_validate_password_policy
8.0/5.7
密码强度检测等级。取值:
0:仅检测密码长度。
1(默认值):检测密码的长度、数字、大小写及特殊字符。
2:检测密码的长度、数字、大小写、特殊字符及字典文件。
说明由于当前暂不支持指定字典文件,因此2强度与1相同。
1:检测密码长度、数字、大小写及特殊字符。
loose_validate_password_length
8.0/5.7
密码的最小长度。
MySQL 5.7:取值范围为0~256。默认值为8。
MySQL 8.0:取值范围为1~12。默认值为8。
10:密码最小长度为10字符(符合要求:10 >= 2 + (2 * 2) + 1 = 7)。
loose_validate_password_number_count
5.7
密码中需包含数字的个数。
取值范围为0~256。默认值为1。
2:密码中至少包含2个数字。
loose_validate_password_mixed_case_count
5.7
密码中需包含大小写字母的个数。
取值范围为0~256。默认值为1。
2:密码中至少包含1个大写字母和1个小写字母(总计2个大小写字母)
loose_validate_password_special_char_count
5.7
密码中需包含特殊字符的个数。
取值范围为0~256。默认值为1。
1:密码中至少包含1个特殊字符。
相关文档
您可以通过RDS控制台(新建账号/重置账号密码)或API(CreateAccount/ResetAccountPassword)设置数据库账号密码。
如需限制数据库账号的使用权限,请参见修改账号权限、指定账号从特定IP地址访问数据库、限制账号只能访问指定表、视图、字段。