linux更新mysql8.0的心酸史

本文完全是個人實踐經驗,包含了mysql8.0升級的全過程以及中間遇到的問題及解決方法。

整個過程中參考的有價值的文檔均有標註。

歡迎收藏,歡迎轉發,但希望註明出處https://blog.csdn.net/qq_34175893/article/details/79564604,原創不易


首先下載安裝所需安裝包,根據自己所需選擇(這裏以rhel7.4,64位爲例)

https://dev.mysql.com/downloads/mysql/8.0.html

 

解壓縮tar包

Tar -zxvf mysql-8.0.4-0.1.rc.el7.x86_64.rpm-bundle.tar

報錯

gzip: stdin: not in gzipformat

tar: Child returnedstatus 1

tar: Error is notrecoverable: exiting now

解決方法:

去掉z參數,使用 tar -xvf解壓正常

原因分析:

1、壓縮文件被人爲的改過名稱,比如:最初壓縮的並非.gz,被人爲的修改了後綴,這時可以去掉後綴再解壓,如:文件FMIS2600DMP.tar.gz,去掉gz後綴,再用tar -xvf 解壓

2、-z參數實際上是調用bz2的加壓或者解壓程序,去掉該參數,則同樣可以避免該問題

 

軟件包的安裝

這裏就按照下面的做就行了,不然會出現很多軟件包的依賴問題。具體問題就不舉例了,我遇到的挺多的

將解壓得到的所有rpm包放在同一個空的文件夾下,mysql-community-server-miniaml-*除外,因爲會和server及client衝突,

然後使用如下命令安裝(我是建議直接全部裝了就好了,沒必要按照我下面的鏈接所給的那樣限定很多,因爲那樣會出現一些衝突問題,直接把9個rpm包都用yum安裝了就好了,建議一定要用yum裝,不要用rpm命令,因爲yum會自動檢測並解決安裝包之間的衝突和依賴問題)

sudoyum install mysql-community-*

安裝參考:https://dev.mysql.com/doc/refman/5.7/en/linux-installation-rpm.html

 

Can’t connect to local MySQL serverthrough socket ‘/var/lib/mysql/mysql.sock

解決步驟:

1 systemctl stop mysqld (停止服務)

2 rm -fr /var/lib/mysql/* (刪除/var/lib/mysql下的所有文件)

3 rm /var/lock/subsys/mysqld(刪除鎖定文件)

4 killall mysqld (殺死所有mysqld進程)

5 systemctl start mysqld (啓動mysql服務。)

參考鏈接:https://www.cnblogs.com/okstill/p/5667138.html

 

Root用戶無密碼登錄數據庫遇到

Access denied for user 'root'@'localhost' (using password: YES)

方法:

跳過root臨時密碼登錄數據庫修改密碼

1.    關閉mysql服務:

systemctl stop mysqld

2. 設置環境變量跳過權限檢查

systemctlset-environment MYSQLD_OPTS="--skip-grant-tables"

3. 重新啓動mysql服務

systemctl start mysqld

4.以root用戶登錄

mysql -u root

這時便可以成功登錄了

5. 設置root用戶密碼

UPDATE mysql.userSET authentication_string= PASSWORD('Root@123') WHERE User = 'root';

在mysql 5.6之後對密碼的強度進行了加強,推出了validate_password 插件(據某些地方說好像之前就有,不過現在成了必須的了)。支持密碼的強度要求。,通過如下命令查看validate_password的各參數配置要求,

MySQL密碼強度審計插件:validate_password的使用說明http://www.xuchanggang.cn/archives/1033.html

 

SHOW VARIABLES LIKE 'validate_password%';

使用如下命令可以自行配置參數,對密碼強度要求最重要的參數爲下面的policy

set global validate_password.policy=LOW;

重新執行

UPDATEmysql.user SET authentication_string = 'root123'  WHERE User = 'root';

所以最終的修改密碼的命令爲

UPDATEmysql.user SET authentication_string = 'root123'  WHERE User = 'root';

6. 停止mysql服務

systemctl stopmysqld

7. 取消之前設置的跳過權限檢查的選項

systemctl unset-environment MYSQLD_OPTS

8.正常啓動mysql

systemctl start mysqld

9. 使用前面設置的新密碼登錄

      mysql -u root -p

 

登錄時遇到問題參考:http://blog.csdn.net/u014306472/article/details/78160427

 

查看默認密碼

grep "temporary password"/var/log/mysqld.log


下面是我把上面的命令寫在一塊,這樣copy執行只需一次,而不需3次

  1. 重新登錄前,設置跳過權限檢查 systemctl stop mysqld; systemctl set-environmentMYSQLD_OPTS="--skip-grant-tables"; systemctl start mysqld
  2. 重新設置
  3. 設置完成後,回覆權限檢查 systemctl stopmysqld; systemctl unset-environment MYSQLD_OPTS; systemctl start mysqld;

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章