在MySQL中,密码复杂度设置可以通过调整密码验证插件的配置参数来实现。MySQL 8.0 引入了 validate_password
插件,用于强制实施密码策略。
查询是否已安装的插件:show plugins;确认是否已安装插件validate_password
查询mysql插件目录位置:show variables like "%plugin_dir%";
确认插件:validate_password.dll
安装方式一(无需重启):
install plugin validate_password soname 'validate_password.dll';
INSTALL PLUGIN validate_password SONAME 'validate_password.so';
安装方式二(需要重启服务):
[mysqld]
plugin-load=validate_password=validate_password.dll
设置密码安全策略:
set global validate_password_policy=2
有三种取值,分别是0、1和2。
0-表示低策略,密码长度至少为8位;
1-表示中策略,密码长度至少为8位,必须包含大小写字母、数字和特殊字符;
2-表示高策略,密码长度至少为8位,必须包含大小写字母、数字、特殊字符和字典词汇检查。
默认参数值:
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
validate-password=ON/OFF/FORCE/FORCE_PLUS_PERMANENT: 决定是否使用该插件(及强制/永久强制使用)。
validate_password_dictionary_file:插件用于验证密码强度的字典文件路径。
validate_password_length:密码最小长度。
validate_password_mixed_case_count:密码至少要包含的小写字母个数和大写字母个数。
validate_password_number_count:密码至少要包含的数字个数。
validate_password_policy:密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG。
validate_password_special_char_count:密码至少要包含的特殊字符数。
其中,关于validate_password_policy-密码强度检查等级:
0/LOW:只检查长度。
1/MEDIUM:检查长度、数字、大小写、特殊字符。
2/STRONG:检查长度、数字、大小写、特殊字符字典文件。
设置案例:
[mysqld]
default_password_lifetime=90
plugin-load=validate_password=validate_password.dll
validate-password=FORCE_PLUS_PERMANENT
validate_password_length = 12
validate_password_number_count = 2
validate_password_special_char_count = 1
validate_password_mixed_case_count = 1
validate_password_policy = STRONG
password_reuse_interval
查看参数:
show variables like '%validate_password%';