MySQL 5.7 弱密码限制

MySQL版本从5.5升级到5.7之后,有一些不习惯,比如强制使用复杂密码。在我的VPS上面每次登录MySQL都要输入复杂难记的密码,安全方面有防火墙限制。
如何破解掉强密码的限制。

修改当前登录的密码
老的修改方式:

mysql> SET PASSWORD=PASSWORD('Root1234@');
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

新的修改方式:

mysql> SET password='Root1234@';
或者可以这样写
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

如果密码设置太简单,MySQL也会报错:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements。因为MySQL5.7默认安装了validate_password插件

mysql> SHOW VARIABLES LIKE 'vali%';
+--------------------------------------+--------+
| 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      |
+--------------------------------------+--------+
6 rows in set (0.00 sec)

5.7初始化后,默认会安装这个插件,若没有安装,则SHOW VARIABLES LIKE 'vali%'则会返回空。
对应参数的value值也为默认值,以下是这些值的解释

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。

想要关闭这个插件,则在配置文件中加入以下并重启mysqld即可:

[mysqld]
validate_password=off

重启mysqld后通过SHOW PLUGINS可以查到:

+-------------------+----------+-------------------+----------------------+-----+
| validate_password | DISABLED | VALIDATE PASSWORD | validate_password.so | GPL |
+-------------------+----------+-------------------+----------------------+-----+

参考

MySQL 5.7 初始密码和密码复杂度问题

原文地址:https://www.cnblogs.com/trunkslisa/p/9494844.html