解决调低mysql 的密码级别遇到的一系列问题包括Unknown system variable ‘validate_password.policy‘等

原本是想给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文件中修改,重启生效,相当于永久生效。

我的是没有继续报错的。

好了,今天的分享就到这里了!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值