概述

validate_password(密码插件)
validate_password(密码插件)是MySQL5.6版本开始有的,部分版本默认是不开启的。
作用:
强制要求登入密码符合复杂性规范

检查插件目录

mysql> show variables like 'plugin_dir';

下载第三方开源插件文件并上传到步骤1目录上

mysql5.7默认安装了密码安全检查插件(validate_password)

配置文件中添加对象参数配置

[mysqld]
plugin-load-add=validate_password.so
or
plugin-load=validate_password.so
# validate_password_policy=2
validate-password=FORCE_PLUS_PERMANENT

连接数据库并进行安装插件

mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so';

检查确认

SELECT
PLUGIN_NAME,
PLUGIN_STATUS,
plugin_library,
load_option
FROM
INFORMATION_SCHEMA.PLUGINS
WHERE
plugin_library = 'validate_password.so';

mysql> show plugins;

根据需求配置密码策略

 1 检查策略变量配置

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | OFF |
| 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 |
+--------------------------------------+--------+


2 密码验证插件选项和变量
1)选项--告诉服务启动时如何加载插件
--validate-password[=ON|OFF|FORCE|FORCE_PLUS_PERMANENT]

ON: 默认值
OFF:关闭
FORCE: 强制
FORCE_PLUS_PERMANENT: mysqld服务启动时加载插件并防止服务在运行中将其删除


2)变量--启用的检查配置项

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 : 默认值为1, 密码强度等级 [LOW:0| MEDIUM:1 | STRONG:2]
validate_password_special_char_count : 默认值为1,限制特殊字符个数

其中,validate_password_policy
0/LOW:只检查长度。
1/MEDIUM:检查长度、数字、大小写、特殊字符。
2/STRONG:检查长度、数字、大小写、特殊字符字典文件。

注意事项

 1 账号密码过期,需修改密码
遇到场景:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.


# 1. 注意密码策略要求 validate_password_policy 等
show variables like 'validate_password%';

# 2. 依据密码策略要求修改密码
/*
-- 2.1 如果密码与Server的策略要求不一致时,临时修改策略及密码后恢复密码策略
set global validate_password_policy=0;
set global validate_password_length=1;
*/
alter user 'root'@'localhost' identified by 'root';
/*
set global validate_password_policy=1;
set global validate_password_length=8;
*/
flush privileges;

-- 2.2 密码符合要求
alter user 'root'@'localhost' identified by 'R#isn218aio';
flush privileges;