MySQL8.0升級(jí)的踩坑歷險(xiǎn)記
前言
最近忙于Fighting的項(xiàng)目,所以筆耕有些松懈,實(shí)為不該。
剛好遇到需要從MySQL5.7.33升級(jí)到MySQL8.0.x的需求,于是記錄一下整個(gè)升級(jí)過(guò)程,踩坑而過(guò)。
背景梗概:本地docker容器中使用的MySQL是5.7.33(鏡像系統(tǒng)用的是ubuntu16.04),而新項(xiàng)目在線上使用了MySQL8.0。從線上導(dǎo)出的sql文件(表結(jié)構(gòu)+數(shù)據(jù))中有一種低版本MySQL不會(huì)用到的字符編碼,一導(dǎo)入就報(bào)錯(cuò),遇到的字符集報(bào)錯(cuò)如下所示:
- Unknown collation: 'utf8mb4_0900_ai_ci'
一頓搜索之后,我也冷靜了下來(lái),有兩種思路,一種是被我稱為掩耳盜鈴式解決方法,一種是根治的辦法。
掩耳盜鈴,顧名思義,不解決本質(zhì)問(wèn)題,而是通過(guò)批量替換字符集的方式解決報(bào)錯(cuò),也就是把文件中所有的utf8mb4_0900_ai_ci 替換為:utf8_general_ci。
第二種就是保持和線上的MySQL版本一致,這樣就能支持該字符集。
于是我采用第二種方法,升級(jí)我的docker容器中的MySQL,順便也可以打包一個(gè)新的鏡像。
升級(jí)的過(guò)程也有點(diǎn)坎坷,但邏輯是清晰地。
1.先徹底卸載現(xiàn)有版本MySQL。
可以使用如下命令:
#刪除mysql的數(shù)據(jù)文件 sudo rm -R /var/lib/mysql/ #刪除mysql的配置文件 sudo rm -R /etc/mysql/ #自動(dòng)卸載mysql(包括server和client) sudo apt-get autoremove mysql* --purge sudo apt-get remove apparmor
記得一定要?jiǎng)h除配置文件,因?yàn)橛锌赡懿患嫒荨?/p>
2.下載deb并按照MySQL8.x。
可以去官網(wǎng)下載,官網(wǎng)地址為https://dev.mysql.com/repo/apt
我們選擇最新的deb下載,網(wǎng)址為:
https://dev.mysql.com/get/mysql-apt-config_0.8.20-1_all.deb。在命令后使用wget命令進(jìn)行下載,如下:
wget https://dev.mysql.com/get/mysql-apt-config_0.8.20-1_all.deb
下載完成之后使用dpkg命令并更新apt源,然后就可以進(jìn)行安裝了,完整命令如下所示:
dpkg -i mysql-apt-config_0.8.20-1_all.deb apt-get update apt-get install -y mysql-server
在最后一個(gè)命令執(zhí)行過(guò)程中,它會(huì)讓你輸入root密碼和一些基本配置,然后就可以完成安裝了。
因?yàn)槭窃趗buntu里面安裝的MySQL,所以啟動(dòng)方式為:
service mysql start
你可以使用命令查看進(jìn)程運(yùn)行情況,正常的時(shí)候類似如需輸出:
/usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock
3.創(chuàng)建用戶和配置權(quán)限。
MySQL8.0.x實(shí)際使用的過(guò)程中發(fā)現(xiàn)用戶授權(quán)和之前版本有點(diǎn)不同,需要分三步:
- 創(chuàng)建用戶。
- 分配權(quán)限。
- 刷新權(quán)限。
具體的sql語(yǔ)句如下,順序也是嚴(yán)格的:
create user 'freephp'@'%' identified by '176serTTc8Cg'; grant all privileges on dev_database.* to 'freephp'@'%' with grant option; flush privileges;
上面的sql解釋一下,第一句是創(chuàng)建一個(gè)名為freephp的用戶,密碼為176serTTc8Cg,%代表可以任意主機(jī)進(jìn)行連接。
第二句的意思是把dev_database的所有權(quán)限賦予用戶freephp。
第三句就是立即刷新權(quán)限,讓新創(chuàng)建的權(quán)限生效。
自此歷險(xiǎn)記大功告成,MySQL8.0的新特性還需要探索,下次再聊。
總結(jié)
到此這篇關(guān)于MySQL8.0升級(jí)踩坑的文章就介紹到這了,更多相關(guān)MySQL8.0升級(jí)踩坑內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- mysql從5.7平滑升級(jí)到8.0.27的實(shí)現(xiàn)
- MySQL 8.0.26版本升級(jí)32版本查詢數(shù)據(jù)為空的解決方案
- MySQL本地版本升級(jí)超詳細(xì)教程(從5.5.20升到8.0.21)
- MySQL5.7升級(jí)MySQL8.0的完整卸載與安裝及連接Navicat的步驟
- MySQL如何從5.5升級(jí)到8.0(使用命令行升級(jí))
- MySQL和MySQL驅(qū)動(dòng)mysql-connector-java升級(jí)到8.0.X版本問(wèn)題
- 升級(jí)到mysql-connector-java8.0.27的注意事項(xiàng)
- Docker版的MySQL5.7升級(jí)到MySQL8.0.13,數(shù)據(jù)遷移
- win2008下mysql8.0.11升級(jí)mysql8.0.17版本詳細(xì)步驟
- MySQL8.0就地升級(jí)到MySQL8.4.0的方法
相關(guān)文章
Mysql數(shù)據(jù)庫(kù)分庫(kù)和分表方式(常用)
本文主要給大家介紹Mysql數(shù)據(jù)庫(kù)分庫(kù)和分表方式(常用),涉及到mysql數(shù)據(jù)庫(kù)相關(guān)知識(shí),對(duì)mysql數(shù)據(jù)庫(kù)分庫(kù)分表相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-03-03MySQL UPDATE 語(yǔ)句的非標(biāo)準(zhǔn)實(shí)現(xiàn)代碼
這篇文章主要介紹了MySQL UPDATE 語(yǔ)句的非標(biāo)準(zhǔn)實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04Workbench通過(guò)遠(yuǎn)程訪問(wèn)mysql數(shù)據(jù)庫(kù)的方法詳解
這篇文章主要給大家介紹了Workbench通過(guò)遠(yuǎn)程訪問(wèn)mysql數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-06-06MySql UNION 一行轉(zhuǎn)多列的實(shí)現(xiàn)示例
在MySQL命令行中,有時(shí)候我們會(huì)遇到一行的數(shù)據(jù)需要以多列的形式呈現(xiàn)的情況,本文就詳細(xì)介紹了一下一行轉(zhuǎn)多列的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08windows系統(tǒng)mysql壓縮包版本安裝過(guò)程
這篇文章主要介紹了windows系統(tǒng)mysql壓縮包版本安裝過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03MySQL約束和事務(wù)知識(shí)點(diǎn)詳細(xì)歸納
在關(guān)系型數(shù)據(jù)庫(kù)中,事務(wù)的重要性不言而喻,只要對(duì)數(shù)據(jù)庫(kù)稍有了解的人都知道事務(wù),下面這篇文章主要給大家介紹了關(guān)于MySQL約束和事務(wù)知識(shí)點(diǎn)歸納的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04mysql 5.1版本修改密碼及遠(yuǎn)程登錄mysql數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了mysql 5.1版本修改密碼及遠(yuǎn)程登錄mysql數(shù)據(jù)庫(kù)的方法,需要的朋友可以參考下2017-04-04