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 |
+-------------------+----------+-------------------+----------------------+-----+