關於mysql初始化以及安全策略無法修改的問題


通過mysql官方的yum源來安裝的mysql-community-server ,這里版本是MySQL 8.0。

wget 
rpm -ivh  mysql80-community-release-el7-1.noarch.rpm
yum  install  mysql-community-server
service mysqld start
 

第一次啟動后會有個初始化的過程,會產生root賬戶的隨機密碼。

為了加強安全性,MySQL5.7為root用戶隨機生成了一個密碼,在error_log中,關於error_log的位置,如果安裝的是RPM包,則默認是 /var/log/mysqld.log 。

可以通過 grep 'temporary password' /var/log/mysqld.log 查找密碼:

登陸上過后,進行正常操作會受限,提示你必須修改密碼后才能進行操作。

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

根據提示修改密碼:

mysql> SET PASSWORD = PASSWORD( '123456' ); 
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> SET PASSWORD = PASSWORD( "root" );
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
 

但是提示根據當前密碼策略,設置的密碼不允許。

查閱官方文檔后發現有以下三種密碼策略:

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

當前密碼策略默認為1 也就是 MEDIUM,但是當你使用:show VARIABLES like "%password%"; 來查看當前策略時,發現還是會讓你先修改密碼(這個比較坑)

接下來修改安全策略(跟進實際環境需要,生產環境簡單密碼可能不安全):

set global validate_password_policy = 0;

以上這條語句是所有人都這么用,好像沒什么毛病,但是到我這兒就不好使啊/cry

 

比較郁悶

Google、百度了好久也沒結果。咋整?

 

有了 , 管它呢,先改密碼,設置一個包含大小寫字母、數字和特殊符號的密碼,OK,搞定,然后再來查看安全策略:

show VARIABLES like "%password%"; 

妮瑪,怎么下划線變成“.”了???

 

好吧現在可以根據需要修改安全策略了:

set global validate_password.policy = 0;

validate_password_number_count指定了密碼中數據的長度

validate_password_special_char_count指定了密碼中特殊字符的長度

validate_password_mixed_case_count指定了密碼中大小字母的長度

 

官方的一些說明:https://dev.mysql.com/doc/refman/8.0/en/validate-password.html

 

補充--->

關於各種MySQL GUI Client無法連接mysql server,且提示

Authentication plugin 'caching_sha2_password' cannot be loaded

這個問題是由於新版本mysql默認啟用caching_sha2_password加密方式,而client無法支持,但是shell是可以連接的。

解決方法:

在/etc/my.cnf文件中添加一行代碼,有可能這行代碼是已存在,但是被注釋掉了

[mysqld]
default_authentication_plugin=mysql_native_password

重啟mysql server,再嘗試連接,如果還是出現同樣的問題,則需要刪除用戶重建,或者新建用戶。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM