- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章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
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
|
记得一定要删除配置文件,因为有可能不兼容.
可以去官网下载,官网地址为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 。
MySQL8.0.x实际使用的过程中发现用户授权和之前版本有点不同,需要分三步:
具体的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 。
最后此篇关于MySQL8.0升级的踩坑历险记的文章就讲到这里了,如果你想了解更多关于MySQL8.0升级的踩坑历险记的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我是一名优秀的程序员,十分优秀!