应用场景:
MYSQL 5.7 设置简单密码
问题描述:MYSQL 5.7 设置简单密码方式
MySQL版本从5.5升级到5.7之后,强制使用复杂密码,首次使用随机密码登录后想修改root用户密码为简单密码,会报错如下:
mysql> set password=password("root");
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
原因分析:
目录
上面报错字串的意思大概是密码规则不符合要求,因为MySQL5.7默认安装了validate_password
插件,这时,我们可以临时修改validate-password属性,设置简单密码。
解决方案:
1. 查看validate-password属性
mysql> SHOW VARIABLES LIKE 'vali%';
+--------------------------------------+--------+
| 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 |
+--------------------------------------+--------+
7 rows in set (0.01 sec)
2. 修改validate_password_length和validate_password_policy的值
mysql> set global validate_password_length=4;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set password=password("root");
Query OK, 0 rows affected, 1 warning (0.00 sec)
修改成功,可以设置4位简单密码了。
3. validate-password属性对应含义
validate_password_length 8 # 密码的最小长度,此处为8。
validate_password_mixed_case_count 1 # 至少要包含小写或大写字母的个数,此处为1。
validate_password_number_count 1 # 至少要包含的数字的个数,此处为1。
validate_password_policy MEDIUM # 强度等级,其中其值可设置为0、1、2。分别对应:
【0/LOW】:只检查长度。
【1/MEDIUM】:在0等级的基础上多检查数字、大小写、特殊字符。
【2/STRONG】:在1等级的基础上多检查特殊字符字典文件,此处为1。
validate_password_special_char_count 1 # 至少要包含的个数字符的个数,此处为1。
4.想要关闭这个插件,则在配置文件中加入以下并重启mysqld即可
[mysqld]
validate_password=off