1. 检查插件目录
mysql> show variables like 'plugin_dir';
2. 下载第三方开源插件文件并上传到步骤1目录上
3. 配置文件中添加对象参数配置
[mysqld] plugin-load-add=validate_password.so or plugin-load=validate_password.so # validate_password_policy=2 validate-password=FORCE_PLUS_PERMANENT
4. 连接数据库并进行安装插件
mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so';
5. 检查确认
SELECT PLUGIN_NAME, PLUGIN_STATUS, plugin_library, load_option FROM INFORMATION_SCHEMA.PLUGINS WHERE plugin_library = 'validate_password.so'; mysql> show plugins;
6. 根据需求配置密码策略
6.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 | +--------------------------------------+--------+
6.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:检查长度、数字、大小写、特殊字符字典文件。
7. 注意事项
7.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;