原本是想给mysql设置一个简单好记的密码,需要降低MySQL的密码级别,但是在该过程中遇到了一系列问题。
解决方案因MySQL的版本不同也不尽相同,我的linux系统上装的是mysql5.7.41版本,windows版本上装的是8.0.26版本,对这两个版本在降低密码级别时都遇到了一些问题。
linux上的mysql5.7.41版本:
当我在mysql中执行以下语句时想降低密码级别时
set global validate_password.policy = 0;
set global validate_password_length = 6;
出现错误:
mysql> set global validate_password.policy = 0;
ERROR 1193 (HY000): Unknown system variable 'policy'
上网查找之后才知道因mysql的版本不同调整密码策略的方法也不同,我们在mysql中输入以下语句即可明白报错原因。
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)
由上述查询结果可知:mysql5.0版本的密码调整策略的参数是validate_password_policy,区别就是policy前面是_而不是.
因此我们执行以下语句即可:
set global validate_password_policy = 0;
set global validate_password_length = 6;
如果继续报错:
set global validate_password_policy = 0;
ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'
这是说你启动没有安全检查插件,我们需要打开/etc/my.cnf,然后在[mysqld]的下方加入如下语句:
plugin-load-add=validate_password.so
validate-password=FORCE_PLUS_PERMANENT
然后重启mysql服务再执行上述调整密码策略的语句即可。
windows上的mysql8.0.26版本
在调整密码策略时我因在linux系统上报错的基础,我首先查看了密码调整策略的方法,但是显示没有结果。
mysql> SHOW VARIABLES LIKE 'validate_password%';
Empty set, 1 warning (0.00 sec)
原因是没有安装 validate_password
插件,经过上网查询发现只要执行以下语句就可以解决问题:
INSTALL COMPONENT 'file://component_validate_password';
再次执行即可。
mysql> 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, 1 warning (0.00 sec)
我们可以发现mysql8.0版本的密码调整策略方法是validate_password.policy和mysql5.0版本的区别是.policy和_policy的区别。
所以我们执行以下语句调整密码策略即可:
set global validate_password.policy = 0;
如果继续报错:
set global validate_password.policy = 0;
ERROR 1193 (HY000): Unknown system variable 'validate_password.policy'
解决方法和上面linux系统上说的方法一样,但是MySQL 8.0之后源码中不包含my.cnf文件和my-default.cnf文件了。虽然源码中不在包含这两个文件了,但手动创建后,启动mysql还是会先从默认路径中获取my.cnf的配置。所以我们手动创建一个my.cnf,放到默认目录/etc下,以后修改配置可以从my.cnf文件中修改,重启生效,相当于永久生效。
我的是没有继续报错的。
好了,今天的分享就到这里了!!!