人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

MySQL8.0升級的踩坑歷險記

發(fā)布日期:2022-02-05 14:20 | 文章來源:腳本之家

最近忙于Fighting的項目,所以筆耕有些松懈,實為不該。

剛好遇到需要從MySQL5.7.33升級到MySQL8.0.x的需求,于是記錄一下整個升級過程,踩坑而過。

背景梗概:本地docker容器中使用的MySQL是5.7.33(鏡像系統(tǒng)用的是ubuntu16.04),而新項目在線上使用了MySQL8.0。從線上導(dǎo)出的sql文件(表結(jié)構(gòu)+數(shù)據(jù))中有一種低版本MySQL不會用到的字符編碼,一導(dǎo)入就報錯,遇到的字符集報錯如下所示:

 - Unknown collation: 'utf8mb4_0900_ai_ci'

一頓搜索之后,我也冷靜了下來,有兩種思路,一種是被我稱為掩耳盜鈴式解決方法,一種是根治的辦法。

掩耳盜鈴,顧名思義,不解決本質(zhì)問題,而是通過批量替換字符集的方式解決報錯,也就是把文件中所有的utf8mb4_0900_ai_ci 替換為:utf8_general_ci。

第二種就是保持和線上的MySQL版本一致,這樣就能支持該字符集。

于是我采用第二種方法,升級我的docker容器中的MySQL,順便也可以打包一個新的鏡像。

升級的過程也有點坎坷,但邏輯是清晰地。

1.先徹底卸載現(xiàn)有版本MySQL。

可以使用如下命令:

#刪除mysql的數(shù)據(jù)文件
sudo rm -R /var/lib/mysql/
#刪除mysql的配置文件
sudo rm -R /etc/mysql/
#自動卸載mysql(包括server和client)
sudo apt-get autoremove mysql* --purge
sudo apt-get remove apparmor

記得一定要刪除配置文件,因為有可能不兼容。

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

在最后一個命令執(zhí)行過程中,它會讓你輸入root密碼和一些基本配置,然后就可以完成安裝了。

因為是在ubuntu里面安裝的MySQL,所以啟動方式為:

service mysql start

你可以使用命令查看進(jìn)程運行情況,正常的時候類似如需輸出:

/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實際使用的過程中發(fā)現(xiàn)用戶授權(quán)和之前版本有點不同,需要分三步:

  1. 創(chuàng)建用戶。
  2. 分配權(quán)限。
  3. 刷新權(quán)限。

具體的sql語句如下,順序也是嚴(yán)格的:

create user 'freephp'@'%' identified by '176serTTc8Cg';
grant all privileges on dev_database.* to 'freephp'@'%' with grant option;
flush privileges;

上面的sql解釋一下,第一句是創(chuàng)建一個名為freephp的用戶,密碼為176serTTc8Cg,%代表可以任意主機進(jìn)行連接。

第二句的意思是把dev_database的所有權(quán)限賦予用戶freephp。

第三句就是立即刷新權(quán)限,讓新創(chuàng)建的權(quán)限生效。

自此歷險記大功告成,MySQL8.0的新特性還需要探索,下次再聊。

總結(jié)

到此這篇關(guān)于MySQL8.0升級踩坑的文章就介紹到這了,更多相關(guān)MySQL8.0升級踩坑內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

香港穩(wěn)定服務(wù)器

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部