1. 程式人生 > >mysql錯誤詳解(1819):ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

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。 安裝好資料庫以後,他會自動生成一個密碼,我們可以不管他的密碼,在配置檔案中加一條語句,如下:
[[email protected] ~]# 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新增的這個功能是為了資料庫的安全,我們平時自己用資料庫可以用比較簡單的密碼,這樣也方便記憶,但是,如果是在公司,密碼還是要設定的複雜一點比較好!