1.配置Mysql 8.0安裝源:
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
2.安裝Mysql 8.0
sudo yum --enablerepo=mysql80-community install mysql-community-server
以下都選y
看到complete就是安裝完啦,是不是很簡單?
3.啓動mysql服務
安裝完的第一件事當然是啓動mysql服務啦
sudo service mysqld start
這樣就算啓動完了哦,不信?看下運行狀態:
service mysqld status
嗯,沒騙你吧。。。
4.查看root臨時密碼:
安裝完mysql之後,會生成一個臨時的密碼讓root用戶登錄,那麼臨時密碼在哪裏看呢?
輸入以下命令就可以啦:
grep "A temporary password" /var/log/mysqld.log
我去,好複雜。。。
5.更改臨時密碼:
這個密碼估計也只有外星人能記得住了,作爲地球人,第一件事就是改成我自己容易記得密碼啦。
先用臨時密碼登錄mysql
輸入:mysql -uroot -p
在Enter password:後面輸入密碼,注意輸入密碼的時候是看不到的喲,別擔心,直管輸完回車就行。
恭喜你,這樣就是登錄成功了。
先在我們要改密碼了喲:
輸入:ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
這裏的new password要改成你自己的密碼喲,我想把密碼改成root,所以我輸入:ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
哎喲,提示密碼不滿足密碼驗證策略,也是,密碼太簡單了呢。
好吧,現在有2種選擇:
- 把密碼改複雜點,讓它符合密碼驗證策略,這個當然是最好的,符合國際慣例;
- 把密碼驗證策略改簡單點,讓它適用簡單的密碼,這個符合懶人的做法。
額,作爲一個上進的人,那我就選擇2吧。
那我們先看看當前的密碼驗證策略是怎麼樣的吧。
輸入:SHOW VARIABLES LIKE 'validate_password.%';
我去,重置密碼之前還不讓看。。。直接看官方文檔吧:
validate_password.length
是密碼的最小長度,默認是8,我們把它改成4
set global validate_password.length=4;
validate_password.policy
驗證密碼的複雜程度,我們把它改成0
set global validate_password.policy=0;
validate_password.check_user_name
用戶名檢查,用戶名和密碼不能相同,我們也把它去掉
set global validate_password.check_user_name=off;
現在再執行修改密碼的命令:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
成功了,密碼設成了root,但是我建議大家還是設個複雜點密碼,不要這麼懶哦。
6.配置遠程訪問
用mysql客戶連接報不允許連接的錯誤,那是因爲沒開通遠程訪問的權限哦。
百度上基本說執行
GRANT ALL ON *.* TO 'root'@'%'; 就行了,但是一不下心報了個錯:
看下默認MySQL用戶:
use mysql;
select host, user, authentication_string, plugin from user;
發現root的host是localhost,不是%哦,那我們就加個host是%的root賬號:
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
再查下用戶
select host, user, authentication_string, plugin from user;
可以看到已經新增了host爲%的root用戶
然後再執行:
GRANT ALL ON *.* TO 'root'@'%';
成功了耶,嘿嘿。
連接成功:
7.navicat連接mysql
用navicat連接mysql還是會報錯:
原因是mysql8的加密方式規則不一樣,是caching_sha2_password
把加密方式改成mysql_native_password就行了:
ALTER USER '[用戶名]'@'%' IDENTIFIED WITH mysql_native_password BY '[密碼]';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
加密方式以及改成了mysql_native_password: