一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - MySQL8.0升級的踩坑歷險記

MySQL8.0升級的踩坑歷險記

2021-12-01 17:13freephp Mysql

聽說mysql8的性能提升了很多,對于我這種喜歡把所有軟件升級到最新版的人來說,二話不說直接升級,這篇文章主要給大家介紹了關于MySQL8.0升級踩坑的相關資料,需要的朋友可以參考下

前言

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

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

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

?
1
- Unknown collation: 'utf8mb4_0900_ai_ci'

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

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

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

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

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

1.先徹底卸載現有版本MySQL。

可以使用如下命令:

?
1
2
3
4
5
6
7
8
9
#刪除mysql的數據文件
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。

可以去官網下載,官網地址為https://dev.mysql.com/repo/apt

我們選擇最新的deb下載,網址為:
https://dev.mysql.com/get/mysql-apt-config_0.8.20-1_all.deb。在命令后使用wget命令進行下載,如下:

?
1
wget https://dev.mysql.com/get/mysql-apt-config_0.8.20-1_all.deb

下載完成之后使用dpkg命令并更新apt源,然后就可以進行安裝了,完整命令如下所示:

?
1
2
3
dpkg -i mysql-apt-config_0.8.20-1_all.deb
apt-get update
apt-get install -y mysql-server

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

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

?
1
service mysql start

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

/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.創建用戶和配置權限。

MySQL8.0.x實際使用的過程中發現用戶授權和之前版本有點不同,需要分三步:

  1. 創建用戶。
  2. 分配權限。
  3. 刷新權限。

具體的sql語句如下,順序也是嚴格的:

?
1
2
3
4
5
create user 'freephp'@'%' identified by '176serTTc8Cg';
 
grant all privileges on dev_database.* to 'freephp'@'%' with grant option;
 
flush privileges;

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

第二句的意思是把dev_database的所有權限賦予用戶freephp。

第三句就是立即刷新權限,讓新創建的權限生效。

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

總結

到此這篇關于MySQL8.0升級踩坑的文章就介紹到這了,更多相關MySQL8.0升級踩坑內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/freephp/p/15473824.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99re7在线精品免费视频 | 4p高h三男一女 | 九九久久国产精品大片 | 污漫日本E同人 | 亚洲视频在线观看免费视频 | 午夜免费啪视频观看视频 | 欧美激情综合 | 欧美色综合高清免费 | 亚洲AV无码国产精品色在线看 | 亚洲视频高清 | 免费十几分视频 | 女教师雪白老汉 | 精品久久久久久无码人妻国产馆 | 性欧洲女人18 | aaa大片| 成人影院在线观看视频 | 日本嫩模| 日韩免费观看成第15集 | 二次元美女内裤凹陷太深 | 大奶妈咪女教师 | 青青在线视频观看 | freexxxx性护士第一次 | 秋霞在线一级 | 免费波多野结衣庭教师 | 成在线人免费 | 精品国产一级毛片大全 | 91xj视频| 青青草在线观看 | 美妇在线 | 欧美又硬又粗又长又大 | 亚州免费一级毛片 | 免费观看一级一片 | 9191免费永久观看 | 成年人免费观看视频网站 | 99久久99久久免费精品蜜桃 | 国产激情视频网站 | 99久久精品6在线播放 | 天堂俺去俺来也www久久婷婷 | 国产精品久久久久影视不卡 | 久久精品黄AA片一区二区三区 | jj视频免费 |