用臨時(shí)密碼進(jìn)入mysql,修改密碼時(shí)報(bào)錯(cuò):
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'aA123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
原因是mysql8.0版安全做的很到位丧鸯,我們看一下8.0版的設(shè)置密碼策略:
mysql> SHOW VARIABLES LIKE 'validate_password%';??????????????????????????????????????????????????????????????????????????????
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
對比mysql5.7版來看:mysql8.0必須先修改了符合要求的密碼先仇参,
才能SHOW VARIABLES LIKE 'validate_password%';
設(shè)置的密碼必須符合以下條件:默認(rèn)是1嘹叫,即MEDIUM,所以剛開始設(shè)置的密碼必須符合長度诈乒,且必須含有數(shù)字待笑,小寫或大寫字母,特殊字符抓谴。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'aA@123456789';?????????????????????????????????????????????????????
Query OK, 0 rows affected (0.02 sec)
首先需要設(shè)置密碼的驗(yàn)證強(qiáng)度等級,設(shè)置 validate_password_policy 的全局參數(shù)為 LOW 即可寞缝, ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 這樣可以使得設(shè)置密碼只看密碼長度是否符合定義的 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???????????????????????? 輸入設(shè)值語句 “ set global validate_password.policy=LOW; ” 進(jìn)行設(shè)值癌压。
當(dāng)前密碼長度為 8 ,如果不介意的話就不用修改了荆陆,按照通用的來講滩届,設(shè)置為 6 位的密碼,設(shè)置 validate_password_length 的全局參數(shù)為 6 即可被啼,??????????????????????????????????????????????????????????????????????????????????????????????????? 輸入設(shè)值語句 “ set global validate_password.length=6; ” 進(jìn)行設(shè)值帜消。
?設(shè)置完成可以重新修改自己簡單的密碼了。
這里我說一下mysql5.7版和mysql8.0的區(qū)別:
mysql8.0版你需要修改一個(gè)符合中等密碼策略的密碼浓体,才能查看環(huán)境變量泡挺,不然你不會發(fā)覺到參數(shù)的變化。 ????
所以有些小伙伴命浴,直接借著mysql5.7的經(jīng)驗(yàn)修改就會發(fā)生如下的錯(cuò)誤:????????????????????????????????????????????????????????? mysql> set global validate_password_policy=0;????????????????????????????????????????????????????????????????????????????????????????????
ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'