mysql出現(xiàn)ERROR 1819 (HY000)的解決方法
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements,出現(xiàn)這個(gè)問題怎么辦?不用著急,下面給出答案。
為了加強(qiáng)安全性,MySQL5.7為root用戶隨機(jī)生成了一個(gè)密碼,在error log中,關(guān)于error log的位置,如果安裝的是RPM包,則默認(rèn)是/var/log/mysqld.log。
一般可通過log_error設(shè)置
mysql> select @@log_error; +---------------------+ | @@log_error | +---------------------+ | /var/log/mysqld.log | +---------------------+ 1 row in set (0.00 sec)
可通過# grep "password" /var/log/mysqld.log 命令獲取MySQL的臨時(shí)密碼
用該密碼登錄到服務(wù)端后,必須馬上修改密碼,不然會(huì)報(bào)如下錯(cuò)誤:
mysql> select user(); ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
如果只是修改為一個(gè)簡單的密碼,會(huì)報(bào)以下錯(cuò)誤:
mysql> ALTER USER USER() IDENTIFIED BY '12345678'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
這個(gè)其實(shí)與validate_password_policy的值有關(guān)。
validate_password_policy有以下取值:
默認(rèn)是1,即MEDIUM,所以剛開始設(shè)置的密碼必須符合長度,且必須含有數(shù)字,小寫或大寫字母,特殊字符。
有時(shí)候,只是為了自己測(cè)試,不想密碼設(shè)置得那么復(fù)雜,譬如說,我只想設(shè)置root的密碼為123456。
必須修改兩個(gè)全局參數(shù):
首先,修改validate_password_policy參數(shù)的值
mysql> set global validate_password_policy=0; Query OK, 0 rows affected (0.00 sec)
這樣,判斷密碼的標(biāo)準(zhǔn)就基于密碼的長度了。這個(gè)由validate_password_length參數(shù)來決定。
mysql> select @@validate_password_length; +----------------------------+ | @@validate_password_length | +----------------------------+ | 8 | +----------------------------+ 1 row in set (0.00 sec)
validate_password_length參數(shù)默認(rèn)為8,它有最小值的限制,最小值為:
validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)
其中,validate_password_number_count指定了密碼中數(shù)據(jù)的長度,validate_password_special_char_count指定了密碼中特殊字符的長度,validate_password_mixed_case_count指定了密碼中大小字母的長度。
這些參數(shù),默認(rèn)值均為1,所以validate_password_length最小值為4,如果你顯性指定validate_password_length的值小于4,盡管不會(huì)報(bào)錯(cuò),但validate_password_length的值將設(shè)為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中任何一個(gè)值,則validate_password_length將進(jìn)行動(dòng)態(tài)修改。
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)
當(dāng)然,前提是validate_password插件必須已經(jīng)安裝,MySQL5.7是默認(rèn)安裝的。
那么如何驗(yàn)證validate_password插件是否安裝呢?可通過查看以下參數(shù),如果沒有安裝,則輸出將為空。
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)
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- mysql ERROR 1044 (42000): Access denied for user ''''@''localhost'' to database
- ERROR 2002 (HY000): Can''t connect to local MySQL server through socket ''/tmp/mysql.sock''
- mysql輸入中文出現(xiàn)ERROR 1366的解決方法
- MySQL出現(xiàn)SQL Error (2013)連接錯(cuò)誤的解決方法
- 關(guān)于MySQL繞過授予information_schema中對(duì)象時(shí)報(bào)ERROR 1044(4200)錯(cuò)誤
相關(guān)文章
mysql中日期的加減 date_add()、date_sub() 函數(shù)及用法小結(jié)
在Mysql中,date_add與date_sub分別是指對(duì)于日期的一個(gè)加減操作,date_add是指從日期中加上指定的時(shí)間間隔,date_sub是指從日期中減去指定的時(shí)間間隔,本文通過實(shí)例講解mysql中日期的加減 date_add()、date_sub() 函數(shù)及用法小結(jié),感興趣的朋友一起看看吧2023-11-11Mysql Binlog數(shù)據(jù)查看的方法詳解
這篇文章主要介紹了Mysql Binlog數(shù)據(jù)查看的方法詳解,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07Mysql中如何批量替換某個(gè)字段的值:replace
這篇文章主要介紹了Mysql中如何批量替換某個(gè)字段的值:replace,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09