密码强度评估
mysql 官方文档:https://dev.mysql.com/doc/refman/8.0/en/validate-password-options-variables.html
在 MySQL8.0 中,使用 validate_password
插件来进行密码强度评估。但是 MySQL8.0 默认是不安装 validate_password
插件的,如果需要进行密码强度评估,是需要我们自行安装插件的。
通过 show variables like '%validate_password%';
查询到数据是空的。
一、安装 validate_password 插件
1、通过 SQL 安装
install plugin validate_password soname 'validate_password.so';
安装之后,如何修改的密码不符合要求是会修改失败的。
如果要卸载 validate_password
插件,可以使用下面的 SQL
uninstall plugin validate_password;
2、通过 my.cnf 安装
在 [mysqld]
中插入下面的数据(需要重启数据库服务)
# 指定插件的名称
plugin-load = validate_password.so
# 设置插件的级别。FORCE_PLUS_PERMANENT 表示在数据库运行的时候,此插件不允许卸载。
validate-password=FORCE_PLUS_PERMANENT
二、validate_password 的参数设置
安装插件之后,show variables like '%validate_password%';
是可以查询到值的。
-
validate_password_policy
:- 默认值:
MEDIUM
- 作用:此参数定义了密码策略的严格程度,可以设置为以下值之一:
LOW
:低级别密码策略,要求密码长度至少 8 个字符。MEDIUM
(默认):中级别密码策略,要求密码长度至少 8 个字符,并包含至少一个小写字母、一个大写字母、一个数字和一个特殊字符。STRONG
:高级别密码策略,要求密码长度至少 8 个字符,并包含至少一个小写字母、一个大写字母、一个数字和一个特殊字符,以及不允许包含与字典文件中的单词相匹配的字符串。
- 默认值:
-
validate_password_length
:- 默认值:
8
- 作用:指定密码的最小长度,密码长度必须大于或等于此值。
- 默认值:
-
validate_password_mixed_case_count
:- 默认值:
1
- 作用:指定密码中必须包含的大小写字母的最小数量。
- 默认值:
-
validate_password_number_count
:- 默认值:
1
- 作用:指定密码中必须包含的数字的最小数量。
- 默认值:
-
validate_password_special_char_count
:- 默认值:
1
- 作用:指定密码中必须包含的特殊字符的最小数量。
- 默认值:
-
validate_password_dictionary_file
:- 默认值:空(不启用字典文件检查)
- 作用:指定密码字典文件的路径。如果设置,密码不允许包含字典文件中的单词。
-
validate_password_dictionary_file_last_parsed
:- 默认值:
0
- 作用:记录上次解析密码字典文件的时间戳。这个参数通常不需要手动设置,它用于管理字典文件的缓存。
- 默认值:
-
validate_password_check_user_name
:- 默认值:
ON
- 作用:如果启用,密码将不允许包含与用户名相同的子字符串。
- 默认值:
-
validate_password_max_length
:- 默认值:无穷大
- 作用:指定密码的最大长度。如果设置,密码的长度不得超过此值。
-
validate_password_max_lifetime
:- 默认值:无穷大
- 作用:指定密码的最大生存期(以天为单位)。如果设置,密码将在超过指定生存期后过期。
三、修改 validate_password
的属性值
1、通过 set global
修改
set global validate_password_length = 4;
set global validate_password_policy = LOW;
注意:通过 set global 修改,会在 MySQL 重启后,被重置
2、通过 my.cnf
修改
# 修改密码安全策略级别
validate_password_policy=LOW
# 修改密码长度
validate_password_length=4
注意:重启MySQL不会丢失设置。