1. 程式人生 > 實用技巧 >linux mysql5.7升級到mysql8.0

linux mysql5.7升級到mysql8.0

linux mysql5.7升級到mysql8.0

操作步驟:
1.首先對mysql5.7的表資料和結構做全量備份
2.刪除mysql5.7,清除log=/var/log/mysqld.log和Datadir=/var/lib/MySQL的資料,其中log、datadir的路徑在/etc/my.cnf中可以找到;
3.安裝資料庫mysql8.0
4.資料回導,把步驟一備份的資料匯入新的資料庫中。

(1)升級前需要備份資料庫

mysql -e "show databases;" -uroot -p| grep -Ev "Database|information_schema|mysql|test|performance_schema|sys" | xargs mysqldump -uroot -p --databases > /home/kingstar/data-for-upgrade.sql
# 此命令是將除information_schema|mysql|test|performance_schema|sys庫之外的資料全部匯出到/home/kingstar/data-for-upgrade.sql

(2)刪除mysql5.7,清除log=/var/log/mysqld.log和Datadir=/var/lib/MySQL的資料
依次執行:

rpm -e --nodeps `rpm -qa | grep mysql` 
rpm -e --nodeps `rpm -qa | grep MySQL`
rpm -e --nodeps `rpm -qa | grep mariadb`

log、datadir中的資料清除:
其中log、datadir的路徑在/etc/my.cnf中可以找到,log=/var/log/mysqld.log
Datadir=/var/lib/MySQL
首先檢視目錄是否有目標檔案,然後執行以下三行:
執行命令: echo > /var/log/mysqld.log
執行命令: cd /var/lib/MySQL
清空歷史資料:rm -rf ./*
(3)安裝資料庫mysql8.0


解壓安裝包
切換工作目錄:
cd /home/kingstar/program/software
mkdir mysql
解壓
tar -xvf mysql-8.0.20-1.el7.x86_64.rpm-bundle.tar -C /home/kingstar/program/software/mysql
cd mysql
mysql使用者初始化
檢查使用者組是否存在:cat /etc/group | grep mysql
建立mysql使用者:
sudo groupadd mysql
sudo useradd -r -g mysql mysql
-----r引數表示mysql使用者是系統使用者,不可用於登入系統

服務安裝


執行 sudo rpm -ivh mysql-community-common-8.0.20-1.el7.x86_64.rpm
執行 sudo rpm -ivh mysql-community-libs-8.0.20-1.el7.x86_64.rpm
執行 sudo rpm -ivh mysql-community-client-8.0.20-1.el7.x86_64.rpm
執行 sudo rpm -ivh mysql-community-server-8.0.20-1.el7.x86_64.rpm
注:如果安裝 server RPM包報 libaio 錯誤時下載 http://mirror.centos.org/centos/7/os/x86_64/Packages/libaio-0.3.107-10.el7.x86_64.rpm
執行 rpm -ivh libaio-0.3.107-10.el7.x86_64.rpm 進行安裝後再執行
服務啟動
首先需要修改配置檔案:
vi /etc/my.cnf
新增內容:
lower_case_table_names=1
sql_mode='NO_ENGINE_SUBSTITUTION'
max_connect_errors=1000
執行啟動命令:
systemctl start mysqld.service
檢查:
如果出現如下內容則表示啟動成功

初始化資料庫:
1.Mysql初始密碼:執行 grep 'temporary password' /var/log/mysqld.log
下圖紅框中的內容即為MySQL密碼

2.mysql -uroot -p 進入控制檯(密碼複製上圖紅框內容後,用複製輸入)
3.修改密碼: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Mysql2020!';(此處必須修改,必須用alert user)
4.執行命令:update mysql.user set host = '%' where user = 'root';
5.執行命令生效:flush privileges;
6.退出mysql控制檯:exit
7.重啟mysql 即可:
systemctl restart mysqld.service

(4)資料回導
執行mysql -uroot -p 進入mysql控制檯後使用 source /home/kingstar/data-for-upgrade.sql 匯入即可