Mysql 5.7 默认对用户密码有密码强度要求,如果指定弱密码,会提示如下:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
Mysql 5.7 中的密码强度控制,是由插件来实现的,具体是由操作系统上的文件/usr/lib64/mysql/plugin/validate_password.so 来控制(RPM安装,即默认位置)。先来了解下密码策略
查看默认密码策略
-
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 |
+--------------------------------------+--------+其中,我们看到参数:validate_password_policy (即密码策略)的值是MEDIUM。官方对于该参数的值说明如下:
policy | explanation |
0 or LOW | length |
1 or MEDIUM | 0+numeric;lowercase/uppercase; special characters |
2 or STRONG | 1+validate_password_dictionary_file |
在上面show variables 查看到的参数,除 validate_password_policy 外,其他都是密码策略的各种控制参数。
-
-
- 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 ---> 密码强度控制字典路径。
-
2. 密码强度验证的开启与关闭
2.1 启用
插件对应的库对象文件需在配置选项plugin_dir指定的目录中。
可使用--plugin-load=validate_password.so,在server启动时载入插件,或者将plugin-load=validate_password.so写入配置文件,:
[mysqld]
plugin-load=validate_password.so
validate-password=FORCE_PLUS_PERMANENT
也可以通过如下语句在server运行时载入插件(会注册进mysql.plugins表)
mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so';
2.2 关闭
方法1) 关闭密码策略
在/etc/my.cnf
配置文件中增加:
[mysqld]
validate_password=off
然后重启mysql
方法2)更改密码策略
set global validate_password_policy=0; # 修改密码策略为low
set global validate_password_length=0; # 密码长度为设置为0 ,即大于0个字符的密码都可以
方法3)初始化Mysql时不启用插件
mysqld --initialize-insecure --datadir=/var/lib/mysql --basedir=/usr --user=mysql