mysql錯誤詳解(1819):ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
阿新 • • 發佈:2018-12-13
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新增的這個功能是為了資料庫的安全,我們平時自己用資料庫可以用比較簡單的密碼,這樣也方便記憶,但是,如果是在公司,密碼還是要設定的複雜一點比較好!