MySQL5.6.6以上的版本推出了validate_password插件,支持密码强度要求。
查看密码策略参数
首先查看当前已经加载的插件,是否已经启用密码验证插件。
show plugins like 'validate_password';
如果没有,先参考下一个步骤,加载完插件再回到这里。
查看所有和密码验证相关的参数:
show variables like 'validate_password%';
validate_password_check_user_name:ON、OFF
检查用户名,设置成ON表示密码可以设置成当前用户名
validate_password_dictionary_file
用于检查密码的字典文件的路径名
validate_password_length
密码的最小长度
validate_password_mixed_case_count
如果密码策略是中等或更强的,要求密码具有的小写和大写字符的最小数量。对于给定的这个值密码必须有那么多小写字符和那么多大写字符。
validate_password_number_count
如果密码策略是中等或更强的,validate_password要求密码具有的数字(数字)字符的最小数量。
validate_password_policy:0/LOW、1/MEDIUM、2/STRONG
validate_password_policy影响validate_password如何使用它的其他策略设置系统变量,除了根据用户名检查密码之外,后者由validate_password_check_user_name独立控制。validate_password_policy值可以使用数值0、1、2或相应的符号值LOW、MEDIUM、STRONG来指定。其中,关于validate_password_policy-密码强度检查等级:0/LOW:只检查长度。1/MEDIUM:检查长度、数字、大小写、特殊字符。2/STRONG:检查长度、数字、大小写、特殊字符字典文件
validate_password_special_char_count
需要包含的特殊字符数量
运行时加载插件
优点是不会中断业务,缺点是插件有被卸载的风险。
对于要加载的插件,必须位于MySQL的插件目录中。可以通过下面的命令查看:
show variables like 'plugin_dir';
然后加载需要的插件,会注册进mysql.plugins表:
INSTALL PLUGIN validate_password SONAME 'validate_password.so';
SET GLOBAL validate_password=ON;
启动时加载插件
可以保证插件不会被卸载,安全性高,但是需要重启服务,可能会中断业务。
[mysqld]
validate_password_policy=2
plugin-load=validate_password.so
validate-password=FORCE_PLUS_PERMANENT # 阻止插件在运行时被删除
validate-password=ON/OFF/FORCE/FORCE_PLUS_PERMANENT决定是否使用该插件(及强制/永久强制使用)