佳木斯湛栽影视文化发展公司

主頁 > 知識(shí)庫(kù) > Docker版的MySQL5.7升級(jí)到MySQL8.0.13,數(shù)據(jù)遷移

Docker版的MySQL5.7升級(jí)到MySQL8.0.13,數(shù)據(jù)遷移

熱門標(biāo)簽:美圖手機(jī) 檢查注冊(cè)表項(xiàng) 阿里云 百度競(jìng)價(jià)點(diǎn)擊價(jià)格的計(jì)算公式 智能手機(jī) 使用U盤裝系統(tǒng) 網(wǎng)站建設(shè) 硅谷的囚徒呼叫中心

1.備份舊的MySQL5.7的數(shù)據(jù)

記得首先要備份舊的數(shù)據(jù),防止升級(jí)失敗導(dǎo)致數(shù)據(jù)丟失。備份的方式有兩種,一種是在宿主機(jī)直接執(zhí)行導(dǎo)出命令,另外一種是先進(jìn)入Docker環(huán)境下進(jìn)行操作。主要的導(dǎo)出命令如下:

#方式一,直接在宿主機(jī)器進(jìn)行數(shù)據(jù)備份
# 0df568 是docker的id ;-uroot -p123456 是用戶名和密碼;dbA dbB是要備份的數(shù)據(jù),--databases 后面可以接多個(gè)數(shù)據(jù)庫(kù)名,導(dǎo)出的sql到/root/all-databases3306.sql
docker exec -it 0df568 mysqldump -uroot -p123456 --databases dbA dbB > /root/all-databases3306.sql
#========================================================================================================================================================
#方式二,先進(jìn)入到docker在執(zhí)行mysqldump,然后再將導(dǎo)出的sql拷貝到宿主
#先進(jìn)入docker
docker exec -it 0df568 /bin/bash
#可選的
source /etc/profile
#執(zhí)行導(dǎo)出命令
mysqldump -uroot -p123456 --databases dbA dbB > /root/all-databases3306.sql
#拷貝到宿主機(jī)器
#退出Docker,執(zhí)行exit命令
exit
#此時(shí),已經(jīng)在宿主的環(huán)境,執(zhí)行拷貝命令,將sql文件從docker紅拷貝出來
docker cp 0df568:/root/all-databases3306.sql /root/all-databases3306.sql

2.拉取MySQL8.0.13的鏡像,完成安裝

拉取和安裝MySQL其實(shí)可以完全參考官網(wǎng)即可。參考網(wǎng)址:https://hub.docker.com/r/mysql/mysql-server/ ,這里再簡(jiǎn)單的描述一下安裝的過程。

2.1 拉取鏡像到本地

運(yùn)行下面的命令即可拉取最新的MySQL鏡像

 docker pull mysql/mysql-server:lastest

拉取指定的MySQL鏡像

#tag就是填寫你要的版本號(hào),例如你想要的MySQL8.0.13那么tag就是8.0.13,則執(zhí)行:docker pull mysql/mysql-server:8.0.13
 docker pull mysql/mysql-server:tag

可以使用docker images查看你拉取下來的進(jìn)行。

2.2 運(yùn)行MySQL8.0.13鏡像

運(yùn)行指定的MySQL8.0.13的Docker鏡像,我們?cè)?.1步驟已經(jīng)拉取了指定的鏡像下來,那么可以通過docker images查看到本地的Docker鏡像,得到鏡像的ID和名字。接下來運(yùn)行下列的命令運(yùn)行MySQL8.0.13的Docker鏡像:

#--name指定運(yùn)行啟動(dòng)后的名字 -e 指定docker里的環(huán)境變量 -v 分區(qū)或者是目錄映射,docker的程序數(shù)據(jù)映射到宿主的指定位置 -p 指定 宿主到docker程序的端口映射 -d 指定鏡像的版本。
docker run --name=mysql8.0 -e MYSQL_ROOT_PASSWORD=123456 -v /root/dockerdata/mysql8.0/data:/var/lib/mysql -p 3307:3306 -dit mysql/mysql-server:8.0.13 

查看是否在運(yùn)行

# 執(zhí)行下列的命令
docker ps

3.升級(jí)到MySQL8.X之后的一些問題

升級(jí)MySQL8.x后,遠(yuǎn)程連接無法連接,這樣很不方便,需要進(jìn)行修改。主要包括下面兩方面的配置:

3.1 提供遠(yuǎn)程訪問

修改用戶為@'%',%代表所有的主機(jī)都可以連接,命令如下:

#先root登錄到數(shù)據(jù)庫(kù),執(zhí)行下列的命令
#a.使用msyql
use mysql;
#b.然后執(zhí)行授權(quán)
GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456'
#c.一定要刷新權(quán)限(重新加載),否則需要重啟MySQL才能生效
FLUSH PRIVILEGES;

3.2 更改連接的密碼校驗(yàn)方式

MySQL8.X的加密方式是caching_sha2_password,caching_sha2_password加密方式在遠(yuǎn)程訪問時(shí)候不支持,所以需要改成:mysql_native_password

# a.修改指定的用戶
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# b.一定要刷新權(quán)限(重新加載),否則需要重啟MySQL才能生效
FLUSH PRIVILEGES;

4.導(dǎo)入數(shù)據(jù)到新的MySQL中

導(dǎo)入數(shù)據(jù),我采用的方式是先將數(shù)據(jù)庫(kù)備份文件拷貝進(jìn)新的Docker,然后再執(zhí)行導(dǎo)入命令。命令如下:

#拷貝備份的文件到docker中
docker cp /root/all-databases3306.sql 3sfsdf:/root/all-databases3306.sql 
#先進(jìn)入docker環(huán)境,然后導(dǎo)入到數(shù)據(jù)庫(kù)
docker exec -it xxx /bin/bash
mysql -u root -p < /root/all-databases3306.sql

5.參考文檔

https://hub.docker.com/r/mysql/mysql-server/
https://bugs.mysql.com/bug.php?id=92675

總結(jié)

以上所述是小編給大家介紹的Docker版的MySQL5.7升級(jí)到MySQL8.0.13,數(shù)據(jù)遷移,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

標(biāo)簽:湘潭 賀州 通遼 煙臺(tái) 黃山 山南 懷化 湖北

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Docker版的MySQL5.7升級(jí)到MySQL8.0.13,數(shù)據(jù)遷移》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    琼中| 沂水县| 汪清县| 鲜城| 泾阳县| 即墨市| 清水河县| 张北县| 华蓥市| 辽宁省| 石柱| 乌拉特后旗| 建湖县| 靖远县| 五台县| 延津县| 呼和浩特市| 报价| 垫江县| 喀喇| 临西县| 永新县| 含山县| 武夷山市| 辉县市| 辽中县| 都兰县| 荃湾区| 屯门区| 南溪县| 黄大仙区| 南宁市| 通山县| 闻喜县| 扎囊县| 广丰县| 亳州市| 顺义区| 安义县| 兰溪市| 鄄城县|