MySQL 8.0 密码管理,密码验证策略,密码强度策略,密码过期策略

1. 密码策略相关参数

(1)新密码不能与前面三次相同

password_history=3

(2)新密码不能与前面 90 天内使用的密码相同

password_reuse_interval=90

(3)修改密码需要用户提供当前密码

password_require_current=on

(4)密码过期时间,单位为天,设置为 0 表示永不过期

default_password_lifetime=0

2. 密码验证策略

MySQL 8.0 通过 validate password 组件实现密码验证策略。

# 安装 validate password 组件
INSTALL COMPONENT 'file://component_validate_password';

# 卸载 validate password 组件
UNINSTALL COMPONENT 'file://component_validate_password';

查看 validate password 相关参数,如下:

mysql> show global variables like 'validate_password%';
| 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.policy 表示密码策略,可选值如下:
    • 0 or LOW,密码必须满足长度要求
    • 1 or MEDIUM,密码必须满足长度、数字、大小写、特殊字符要求
    • 2 or STRONG,密码必须满足长度、数字、大小写、特殊字符、字典文件要求
  • validate_password.length 表示密码的最小长度
  • validate_password.number_count,表示密码中数字的最小数量
  • validate_password.mixed_case_count,表示密码中混合大小写字母的数量
  • validate_password.special_char_count,表示密码中特殊字符的数量
  • validate_password.dictionary_file,表示字典文件的路径
  • validate_password.check_user_name,设置为 ON 表示密码不能与当前会话的账号名称相同

3. 动态调整用户的密码策略

创建用户时指定密码策略,如下:

# 密码5天内不重复,不能使用之前5次的密码,5天后过期
create user admin100@'%' identified with 'mysql_native_password' by '123456' password reuse interval 5 day password history 5 password expire interval 5 day;

# 密码永不过期
create user admin200@'%' identified with 'mysql_native_password' by '123456' password reuse interval 5 day password history 5 password expire never;

alter user 动态修改用户的密码策略,如下:

# 动态修改用户的密码策略
alter user admin200@'%' password reuse interval 10 day password history 10 password expire interval 10 day;

参考资料:

https://dev.mysql.com/doc/mysql-security-excerpt/8.0/en/validate-password-options-variables.html

文章评论

0条评论