MySQL5.7 開始,增長了不少安全性的更新。老版本的用戶可能會有一些不習慣,這裏介紹關於5.7版本的數據庫密碼問題。mysql
5.7.6 之後的版本在啓動數據庫的時候,會生成密碼放到日誌文件裏,像這樣:linux
[root@centos-linux ~]# cat /var/log/mysqld.log | grep 'password' 2016-07-16T03:07:53.587995Z 1 [Note] A temporary password is generated for root[[@localhost](http://my.oschina.net/u/570656)](http://my.oschina.net/u/570656): 2=s6NZk.t:fz
而後使用該密碼登錄數據庫,可是不能進行任何操做,提示須要先修改密碼。sql
mysql> show databases; ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
這裏修改密碼就會遇到驗證,簡單的密碼會提示不符合規則shell
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
由於5.7裏引入了一個validate_password
插件來檢驗密碼強度。數據庫
默認值分別以下:centos
mysql> show variables like 'vali%'; +--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | validate_password_dictionary_file | | | validate_password_length | 8 | | validate_password_mixed_case_count | 1 | | validate_password_number_count | 1 | | validate_password_policy | MEDIUM | | validate_password_special_char_count | 1 | +--------------------------------------+--------+ 6 rows in set (0.01 sec)
意義以下:安全
validate_password_length # 密碼的最小長度,默認爲8。 validate_password_mixed_case_count # 至少要包含小寫或大寫字母的個數,默認爲1。 validate_password_number_count # 至少要包含的數字的個數,默認爲1。 validate_password_policy # 強度等級,可設置爲0、一、2。 【0/LOW】:只檢查長度。 【1/MEDIUM】:在0等級的基礎上多檢查數字、大小寫、特殊字符。 【2/STRONG】:在1等級的基礎上多檢查特殊字符字典文件,此處爲1。 validate_password_special_char_count # 至少要包含的特殊字符的個數,默認爲1。
因此初始設置密碼好比大於8位,包含數字,大小寫字母,特殊字符。ui
同時也能夠修改上面這些配置減弱密碼強度驗證。this