最近在编写mysql一键安装的脚本,遇到的坑一个接着一个,足足折磨了我三天,初步完成了mysql安装部分,这里要好好说一下mysql修改密码的一些事情!!!
一篇文章写完有点多,我这里拆成几个部分来讲吧

1、问题

看到这个报错,“你的密码不满足当前的密码限制要求”

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

第一反应就是要查看一下密码限制的要求是什么!哪里有问题就看哪里!

2、分析

进入msyql数据库里,直接使用查看命令

mysql -uroot -p******
show variables like 'validate_password%';

接着你会看到如下信息:

+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| 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.02 sec)

变量名称

变量值

备注

验证用户名


指是否验证登录名称,即root

字典文件

验证密码长度

8

要求密码长度是8位

大小写的最小个数

1

大小写至少一个

数字的最小个数

1

最少一个数字

密码强度

中等

密码强度分为low(0)、medium(1)、strong(2)三种

特殊字符最少数量

1

特殊字符至少一个

密码强度说明

密码强度

说明

LOW

校验级别最低,只校验密码长度,默认长度是8位

MEDIUM

首先要满足的是密码强度为“LOW”时的所有验证要求,再验证密码中的数字个数、大小写个数、特殊字符个数

STRONG

要求满足密码强度为 “LOW”和“MEDIUM”时的所有验证要求,还要求对于密码中任意连续4个(或4个以上)字符不得是字典中的单词(validate_password_dictionary_file)

3、解决

了解了原理,现在就可以对症下药了
首先确认自己想要设置什么样的密码
其次根据密码格式进行修改
最后就可以直接修改而不会报错了

案例
要将密码设置为123456

将密码等级设置为低,此时只需要校验密码长度即可。

set global validate_password.policy=LOW;

这时,我们将密码长度设置为6,则满足要求

set global validate_password.length=6;

修改密码的命令

ALTER user 'root'@'localhost' identified by "123456";

4、总结

知己知彼,百战不殆 ~ ~
掌握了如何修改密码限制的法门,设置个性化的密码,还不是轻而易举的事吗!!!