記一次mysql數據庫報錯ERROR 1819 (HY000)問題解決過程
瀏覽量: 次 發布日期:2023-10-07 13:10:15
記一次mysql數據庫報錯ERROR 1819 (HY000)問題解決過程
最近在用rpm安裝數據庫后改密碼碰到一個報錯:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements,下面簡單記錄下問題及解決過程,做個備忘!
以下基于操作系統centos7.3,mysql版本為5.7.24做演示。
修改密碼時發現報錯,報錯如圖所示:
為了加強安全性,MySQL5.7為root用戶隨機生成了一個密碼,在error log中,關于error log的位置,如果安裝的是RPM包,則默認是/var/log/mysqld.log。
在第一次登陸修改密碼時如果只是修改為一個簡單的密碼,會報以下錯誤:
mysql> ALTER USER USER() IDENTIFIED BY '12345678';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
這個其實與validate_password_policy的值有關。
validate_password_policy有以下取值:
默認是1,即MEDIUM,所以剛開始設置的密碼必須符合長度,且必須含有數字,小寫或大寫字母,特殊字符。
有時候,只是為了自己測試,不想密碼設置得那么復雜,譬如說,我只想設置root的密碼為123456。
必須修改兩個全局參數:
首先,修改validate_password_policy參數的值
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
這樣,判斷密碼的標準就基于密碼的長度了。這個由validate_password_length參數來決定。
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
| 8 |
+----------------------------+
1 row in set (0.00 sec)
validate_password_length參數默認為8,它有最小值的限制,最小值為:
validate_password_number_count
+ validate_password_special_char_count
+ (2 * validate_password_mixed_case_count)
其中,
validate_password_number_count指定了密碼中數據的長度,
validate_password_special_char_count指定了密碼中特殊字符的長度,
validate_password_mixed_case_count指定了密碼中大小字母的長度。
這些參數,默認值均為1,所以validate_password_length最小值為4,如果你顯性指定validate_password_length的值小于4,盡管不會報錯,但validate_password_length的值將設為4。如下所示:
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
連云港數據恢復| 8 |
+----------------------------+
1 row in set (0.00 sec)
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
| 4 |
+----------------------------+
1 row in set (0.00 sec)
如果修改了
validate_password_number_count,
validate_password_special_char_count,
validate_password_mixed_case_count中任何一個值,則validate_password_length將進行動態修改。
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
| 4 |
+----------------------------+
1 row in set (0.00 sec)
mysql> select @@validate_password_mixed_case_count;
+--------------------------------------+
| @@validate_password_mixed_case_count |
+--------------------------------------+
| 1 |
+--------------------------------------+
1 row in set (0.00 sec)
mysql> set global validate_password_mixed_case_count=2;
Query OK, 0 rows affected (0.00 sec)
mysql> select @@validate_password_mixed_case_count;
+--------------------------------------+
| @@validate_password_mixed_case_count |
+--------------------------------------+
| 2 |
+--------------------------------------+
1 row in set (0.00 sec)
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
| 6 |
+----------------------------+
1 row in set (0.00 sec)
當然,前提是validate_password插件必須已經安裝,MySQL5.7是默認安裝的。
浦東數據恢復那么如何驗證validate_password插件是否安裝呢?可通過查看以下參數,如果沒有安裝,則輸出將為空。
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_dictionary_file | |
| validate_password_length | 6 |
| validate_password_mixed_case_count | 2 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+--------------------------------------+-------+
6 rows in set (0.00 sec)
上面已經解釋的很清楚了,所以這里我只需要執行:
set global validate_password_policy=0即可解決。如下所示:
修改密碼成功。
大家也可以自己測試一下,看一下mysql5.7修改密碼策略是怎樣的,后面會分享更多DBA方面的內容,感興趣的朋友可以關注一下~