mysql之validate_password_policy的使用
前面長篇大論,大刀闊斧,事無巨細地講解了mysql在centos上的安裝。
但是呢,上一篇遺留一個問題,就是mysql修改密碼時候遇到的一個問題:密碼校驗策略。
引用多篇文章的內(nèi)容,自己梳理了一下,添加了一點自己的理解。老樣子,請看大屏幕:
前言
validate_password插件是mysql5.6以后可以引入的一個新密碼校驗插件(網(wǎng)友說的,同時還說要用這個插件至少要求mysql5.6.6之后的版本,沒啥重要的,就沒去驗證了),在mysql5.7之后會自動安裝的(這個是真的,我裝的5.7.21是這樣的)。
validate_password_policy是隨著validate_password插件誕生而誕生的,換句話說如果沒有安裝validate_password插件,就不用看下面的內(nèi)容了。
從創(chuàng)建用戶說起:如我們在mysql中可以用grant all on *.* to userd@'localhost' identified by '123'; 來創(chuàng)建一個userd用戶,雖然用戶是創(chuàng)建成功了,但是這個用戶的密碼強度太低了非常容易被破解;為了把問題解決在搖籃里,最好是在創(chuàng)建用戶時就驗證密碼強度,如果強度達不到要求就不允許創(chuàng)建。
為了達到這個目地validate_password插件應(yīng)運而生,如果沒有裝過validate_password插件,可以如下安裝(未測試過):
install plugin valaidte_password soname 'validate_password.so';
密碼校驗策略典型例子
第一次安裝完mysql不管是用臨時密碼登入還是通過免密方式修改密碼登入之后,如果沒有馬上修改密碼,而有其他的對數(shù)據(jù)庫的操作動作都會報錯:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
這個時候如果直接修改密碼:
alter user 'root'@'localhost' identified by '123456789';
就會觸發(fā)mysql的安全校驗問題了:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
validate_password_policy作用
判斷修改密碼時候新密碼是否符合當前的策略,不滿足報錯,不讓修改。
validate_password_policy類型
Policy | Tests Performed |
---|---|
0 or LOW | Length |
1 or MEDIUM | Length; numeric, lowercase/uppercase, and special characters |
2 or STRONG | Length; numeric, lowercase/uppercase, and special characters; dictionary file |
用于控制validate_password行為系統(tǒng)參數(shù)
這些參數(shù)是要安裝好validate_password 插件后才能通過show variables like 'validate_password%';看到。
001、validate_password_policy 這個參數(shù)用于控制validate_password的驗證策略 0-->low 1-->MEDIUM 2-->strong。
002、validate_password_length密碼長度的最小值(這個值最小要是4)。
003、validate_password_number_count 密碼中數(shù)字的最小個數(shù)。
004、validate_password_mixed_case_count大小寫的最小個數(shù)。
005、validate_password_special_char_count 特殊字符的最小個數(shù)。
006、validate_password_dictionary_file 字典文件
查看所有的validate_password相關(guān)的參數(shù)值
修改策略方式
set global validate_password_policy=0;
策略解釋
0 or LOW
校驗級別最低,只校驗密碼長度,只要長度跟validate_password_length一樣即可,默認長度是8位。
可以通過:
select @@validate_password_length;
來查詢當前設(shè)置的密碼長度。
validate_password_length最小值是4位,組成如下:
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ù),默認值均為1,所以validate_password_length最小值為4,如果你顯性指定validate_password_length的值小于4,盡管不會報錯,但validate_password_length的值將設(shè)為4。
直接設(shè)置validate_password_length
set global validate_password_length=7
間接設(shè)置validate_password_length
validate_password_number_count
validate_password_special_char_count
validate_password_mixed_case_count
中任何一個值被修改了,則validate_password_length將進行動態(tài)修改。
修改方式
以validate_password_mixed_case_count為例子,另外幾個一樣的修改方式:
set global validate_password_mixed_case_count=2
注意
動態(tài)修改,不一定會直接影響到validate_password_length的長度,如果validate_password_length已經(jīng)是最小值時才會被動態(tài)修改掉,否則不會。
1 or MEDIUM
這個時候首先要滿足的是validate_password_policy=0時的驗證要求。
然后現(xiàn)去驗證密碼中的數(shù)字個數(shù),大小寫個數(shù),特殊字符個數(shù)。
這些又分別由validate_password_number_count,validate_password_mixed_case_count,validate_password_special_char_count 這幾個參數(shù)來控制。
2 or STRONG
這個時候必須先滿足0,1的要求,然后它還追加了一個,對于密碼中任意連續(xù)4個(或4個讓上)字符不得是字典中的單詞(validate_password_dictionary_file)
注意
validate_password_number_count
validate_password_special_char_count
validate_password_mixed_case_count
三個的改動只會直接修改掉已經(jīng)處在最小值的valide_password_length的值。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決MySQL啟動報錯:ERROR 2003 (HY000): Can''t connect to MySQL serv
這篇文章主要介紹了解決MySQL啟動報錯:ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061),本文解釋了如何解決該問題,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07InnoDB引擎數(shù)據(jù)庫主從復(fù)制同步新的分享
近期將公司的MySQL架構(gòu)升級了,由原先的一主多從換成了DRBD+Heartbeat雙主多從,所以這里也將其心得歸納總結(jié)了一下2012-11-11MYSQL數(shù)據(jù)庫GTID實現(xiàn)主從復(fù)制實現(xiàn)(超級方便)
這篇文章主要介紹了MYSQL數(shù)據(jù)庫GTID實現(xiàn)主從復(fù)制實現(xiàn)(超級方便),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11