一、概述
主要是校验新建用户密码的复杂度是否符合要求
二、设置
1、参数说明
plugin-load-add=validate_password.so or plugin-load=validate_password.so
#服务器在启动时加载插件,并防止在服务器运行时删除插件。
validate-password=FORCE_PLUS_PERMANENT
validate_password_check_user_name :设置为ON的时候表示能将密码设置成当前用户名。
validate_password_dictionary_file :validate_password用于检查密码的字典文件的路径名。
validate_password_length :validate_password所需密码的最小字符数。
validate_password_mixed_case_count :如果密码策略是中等或更强的,validate_password要求密码具有的小写和大写字符的最小数量。
对于给定的这个值密码必须有那么多小写字符和那么多大写字符。
validate_password_number_count :如果密码策略是中等或更强的,validate_password要求密码具有的数字(数字)字符的最小数量。
validate_password_special_char_count:如果密码策略是中等或更强的,validate_password要求特殊字符最小数量。
validate_password_policy : validate_password强制执行的密码策略,validate_password_policy影响
validate_password如何使用它的其他策略设置系统变量,除了根据用户名检查密码之外,后者由validate_password_check_user_name独立控制。
validate_password_policy值可以使用数值0、1、2或相应的符号值LOW、MEDIUM、STRONG来指定
2、设置
[mysqld]
plugin-load=validate_password.so
validate-password=FORCE_PLUS_PERMANENT
validate_password_length=8
validate_password_mixed_case_count=1
validate_password_number_count=1
validate_password_special_char_count=1
validate_password_policy=MEDIUM
3、特别说明
validate_password_policy
指定密码的强度验证等级,默认为 MEDIUM;
取值:
0/LOW:只验证长度;
1/MEDIUM:验证长度、数字、大小写、特殊字符;
2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;
当级别为LOW时:只验证长度,即使设置了数字、字母、特殊字符,也不会校验
当级别为MEDIUM时:验证长度、数字、大小写、特殊字符,这时候如果设置了字典文件也不校验
当级别为STRONG时:验证长度、数字、大小写、特殊字符、字典文件,默认validate_password_dictionary_file字典路径为空,share路径下
有个dictionary.txt的模板配置文件,存放了日常常用的4位以上的数字、字母、特殊字符或者数字字母组合的字符串,当设置字典路径指向他时
set global validate_password_dictionary_file="/app/mysql/share/dictionary.txt";
后续创建的密码不允许包含字典文件中的字符串
"ERROR 1819 (HY000): Your password does not satisfy the current policy requirements"
4、查看设置
mysql> show variables like 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password.check_user_name | ON |
| 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 |
+--------------------------------------+--------+
三、额外参数
## 新密码不能和前面三次的密码相同
password_history = 3 ;
## 新密码不能和前面九十天内使用的密码相同
password_reuse_interval = 90 ;
## 默认为off;为on 时 修改密码需要用户提供当前密码 (开启后修改密码需要验证旧密码,root 用户不需要)
password_require_current = on ;