MySQL修改密码安全策略

MySQL跳过密码登录

  1. 编辑/etc/my.cnf文件,添加skip-grant-tables
  2. 重启MySQL服务即可
service mysqld restart
mysql -uroot -pxxxx

重置密码安全策略
一般通过RPM包安装的MySQL,都会随机生成一个临时密码,密码在/var/lib/mysqld.log文件中,第一次登陆,需要到该文件中获取密码。登陆之后,不管进行什么操作,都会报下面的错:

mysql > show databases;
You must reset your password using ALTER USER statement before executing this statement

这提示我们必须修改密码,因为临时密码是有期限的,过期后就不能在使用了。然而第一次修改密码,必须通过下面的语句进行修改:

mysql > ALTER USER USER() IDENTIFIED BY '1111111';
Your password does not satisfy the current policy requirements

也可以使用下面的语句进行设置:

mysql > SET PASSWORD = PASSWORD('123456');
mysql > SET PASSWORD FOR USER = PASSWORD('123456');

不指定用户名默认是当前用户,当时现在一般推荐使用alter user这种语法修改密码。

但是可能会报错,因为密码强度过低。在MySQL最新版本中,对MySQL的密码强度进行了限制,默认的密码强度非常高,所以我们想要设置简单的密码那是不可能了。如果想要修改密码强度,则必须修改MySQL密码强度的策略。

MySQL密码策略默认是通过validate_password_policy属性进行设置的。我们可以通过下面语句进行查询:

mysql> select @@validate_password_policy;
+----------------------------+
| @@validate_password_policy |
+----------------------------+
| MEDIUM                     |
+----------------------------+
1 row in set (0.00 sec)

可以看出结果是MEDIUM,那么MEDIUM是什么意思呢?下图有介绍:
[外链图片转存失败(img-cQvQLZRm-1565317508217)(/MySQL/Images/mysql-password-policy.png)]

由图可以看出,策略为0时,密码强度最低,只要长度满足就可以了。策略为1时,也就是MEDIUM,不仅需要长度满足,还有数字,大小写,特殊字符要求。因此我们可以通过设置该属性来该变策略。

mysql> set global validate_password_policy=0;

在命令行只是临时生效,要想永久生效,则必须在/etc/my.cnf文件中进行配置。
密码策略的其它设置可以通过下面进行查看:

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.06 sec)

validate_password_number_count :密码中至少含有的数字个数,当密码策略是MEDIUM或以上时生效。
validate_password_special_char_count :密码中非英文数字等特殊字符的个数,当密码策略是MEDIUM或以上时生效。
validate_password_mixed_case_count :密码中英文字符大小写的个数,当密码策略是MEDIUM或以上时生效。
validate_password_length :密码的长度
validate_password_dictionary_file :指定密码验证的字典文件路径。
validate_password_policy :这个参数可以设为0、1、2,分别代表从低到高的密码强度,此参数的默认值为1,如果想将密码强度改若,则更改此参数为0。

所以,我们不仅可以通过设置validate_password_policy属性来修改密码强度,还可以通过修改其它属性。只是通过validate_password_policy比较方便。

你可能感兴趣的:(MySQL)