mysql 密码策略

发布于 2021-08-30  510 次阅读


MySQL 多种场景会出现

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

###mysql 例子
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'oI8awueRV5Ij';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
####在密码添加特殊字符,密码设置就成功
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'oI8awu@RV5Ij';
Query OK, 0 rows affected (0.00 sec)

但是有时候我们需要一些密码,为了保持和代码的利写好的mysql 密码一致,需要修改一些密码不符合mysql 的密码要求的时候

解决办法:
1、查看 mysql 初始的密码策略,输入语句 “ SHOW VARIABLES LIKE 'validate_password%'; ” 进行查看,

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      |
+--------------------------------------+--------+
7 rows in set (0.00 sec)
mysql>
#############################################################################
###关于 mysql 密码策略相关参数;
1)validate_password_length  固定密码的总长度;
2)validate_password_dictionary_file 指定密码验证的文件路径;
3)validate_password_mixed_case_count  整个密码中至少要包含大/小写字母的总个数;
4)validate_password_number_count  整个密码中至少要包含阿拉伯数字的个数;
5)validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;
关于 validate_password_policy 的取值:
0/LOW:只验证长度;
1/MEDIUM:验证长度、数字、大小写、特殊字符;
2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;
6)validate_password_special_char_count 整个密码中至少要包含特殊字符的个数;

假设我们需要将MySQL 的root 密码改成123456

1.首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,输入设值语句 “ set global validate_password_policy=LOW; ”

2.当前密码长度为 8 ,如果不介意的话就不用修改了,按照通用的来讲,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可,输入设值语句 “ set global validate_password_length=6; ” 进行设值。

################完成步骤1和2后#####################

mysql> set global validate_password_policy=LOW;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=6;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_check_user_name    | OFF   |
| validate_password_dictionary_file    |       |
| validate_password_length             | 6     |
| validate_password_mixed_case_count   | 1     |
| validate_password_number_count       | 1     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 1     |
+--------------------------------------+-------+
7 rows in set (0.00 sec)

可以看到密码的策略变成只验证长度6的密码策略

现在可以为 mysql 设置简单密码了,只要满足六位的长度即可,输入修改语句 “ ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; ” 可以看到修改成功,表示密码策略修改成功了!!!