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