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