mysql错误详解(1819):ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

今天新安装了一个mysql5.7,想自己修改一个新密码,结果总是出现1819这个错误,后面查了一下,是因为mysql5.7对密码有一些新的要求:密码必须要有一定的复杂度。下面我就来解释一下如何修改数据库,让mysql5.7可以接受我们自己的密码“123123”
具体步骤:

  • 1、肯定要先安装好mysql5.7的数据库啦,我们最终的目的就是把数据库的密码改成123123。
    安装好数据库以后,他会自动生成一个密码,我们可以不管他的密码,在配置文件中加一条语句,如下:
[root@server-10 ~]# vim /etc/my.cnf
skip-grant-tables  ##跳过权限表,这样启动数据库以后,就可以无密码登录!

加入条语句以后,我们可以直接用mysql命令进入到数据库!然后可以用update语句修改密码

mysql>update mysql.user set authentication_string=password("123123");
mysql>flush privileges;  ##刷新权限表
#这只是第一次修改,注意的是,mysql5.7将密码属性的名称改成了authentication_string,不再是以前的password,我也不知道为什么要改一个这么长的名称,password不挺好的嘛,估计是怕和password()混乱!可以自己用以下语句查看!
mysql> desc mysql.user;
  • 然后可以把配置文件中skip-grant-tables去掉,重启mysql服务,用密码123123登录到mysql
mysql> use mysql;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
#进去以后,不能进行操作,会提示要用alter修改密码
mysql> alter user 'root'@'localhost' identified by '123123';
**ERROR 1819 (HY000): Your password does not satisfy the current policy requirements**
#就是这里,我本来是想直接把密码改成123123的,结果他提示密码不满足要求,后面我有尝试了几次,发现总是不行,一查才知道要改成指定格式的密码!

这个其实与validate_password_policy的值有关。
validate_password_policy有以下取值:

Policy Tests Performe(要求
0 or LOW Length
1 or MEDIUM numeric, lowercase/uppercase, and special characters
2 or STRONG Length; numeric, lowercase/uppercase, and special characters

默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
有时候,只是为了自己测试,不想密码设置得那么复杂,譬如说,我只想设置root的密码为123123.

这是时候,Wimbledon可以在第一次使用进入数据库的时候修改几个全局变量就行,或者再次跳过权限表进入到数据库!

mysql> show variables like "%validate%";
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| query_cache_wlock_invalidate         | OFF    |
| validate_password_check_user_name    | OFF    |
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |   ##密码的最小长度,改成6
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |   #这个改成0,就可以接受简单的密码
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+
#修改全局变量
mysql> set global validate_password_length=6;
Query OK, 0 rows affected (0.00 sec)

mysql> set global  validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like "%validate%";
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| query_cache_wlock_invalidate         | OFF   |
| validate_password_check_user_name    | OFF   |
| validate_password_dictionary_file    |       |
| validate_password_length             | 6     |
| validate_password_mixed_case_count   | 1     |
| validate_password_number_count       | 1     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 1     |
+--------------------------------------+-------+
8 rows in set (0.00 sec)

mysql> alter user 'root'@'localhost' identified by '123123';  #重新修改密码,不会再有错误!
Query OK, 0 rows affected (0.01 sec)

总结:这样我们就把数据库的密码修改成了一个简单的密码,但是,mysql5.7新增的这个功能是为了数据库的安全,我们平时自己用数据库可以用比较简单的密码,这样也方便记忆,但是,如果是在公司,密码还是要设置的复杂一点比较好!

猜你喜欢

转载自blog.csdn.net/ssiyla/article/details/82931439