「MySQL」- 调整密码策略等级

问题描述

在修改数据库密码时,产生如下错误提示:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

问题原因

第一种,在执行 GRANT ALTER ON `itop`.* TO "itop"@"127.0.0.1"; 也会产生该错误。经过我们简单的测试,可能是因为用户不存在而导致该问题的出现。本文不讨论这种情况,而且该问题也较容易解决。

第二种,由于对用户设置的密码没有满足 MySQL 密码策略的要求。这是我们要讨论并解决的问题。

解决方法

解决办法有两种:(1)使用符合密码策略的密码;(2)修改配置以降低密码策略。

自然应该采用(1)方法,但是在某些情况下,我们不得不采用(2)方法以解决问题。我们这里介绍的也是(2)方法。

查看当前密码策略

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| 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      |
+--------------------------------------+--------+

修改密码策略

密码策略的修改实际就是配置参数的修改,编辑 my.cnf 的 [mysqld] 部分:

[mysqld]
validate_password_policy=LOW

或者调整全局变量:

SET GLOBAL validate_password_length = 6;
SET GLOBAL validate_password_number_count = 0;

参考文献

How to Change MySQL Password Policy Level
MySQL 5.7 Reference Manual/The Password Validation Plugin
Your password does not satisfy the current policy requirements