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; # 修改密码策略为lowset global validate_password_length=0; # 密码长度为设置为0 ,即大于0个字符的密码都可以
方法3)初始化Mysql时不启用插件
mysqld --initialize-insecure --datadir=/var/lib/mysql --basedir=/usr --user=mysql