MySQL8.0升级的踩坑历险记


Posted in MySQL onNovember 01, 2021

前言

最近忙于Fighting的项目,所以笔耕有些松懈,实为不该。

刚好遇到需要从MySQL5.7.33升级到MySQL8.0.x的需求,于是记录一下整个升级过程,踩坑而过。

背景梗概:本地docker容器中使用的MySQL是5.7.33(镜像系统用的是ubuntu16.04),而新项目在线上使用了MySQL8.0。从线上导出的sql文件(表结构+数据)中有一种低版本MySQL不会用到的字符编码,一导入就报错,遇到的字符集报错如下所示:

- Unknown collation: 'utf8mb4_0900_ai_ci'

一顿搜索之后,我也冷静了下来,有两种思路,一种是被我称为掩耳盗铃式解决方法,一种是根治的办法。

掩耳盗铃,顾名思义,不解决本质问题,而是通过批量替换字符集的方式解决报错,也就是把文件中所有的utf8mb4_0900_ai_ci 替换为:utf8_general_ci。

第二种就是保持和线上的MySQL版本一致,这样就能支持该字符集。

于是我采用第二种方法,升级我的docker容器中的MySQL,顺便也可以打包一个新的镜像。

升级的过程也有点坎坷,但逻辑是清晰地。

1.先彻底卸载现有版本MySQL。

可以使用如下命令:

#删除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命令进行下载,如下:

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

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

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

在最后一个命令执行过程中,它会让你输入root密码和一些基本配置,然后就可以完成安装了。

因为是在ubuntu里面安装的MySQL,所以启动方式为:

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语句如下,顺序也是严格的:

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升级踩坑内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL Innodb关键特性之插入缓冲(insert buffer)
Apr 08 MySQL
详解MySQL InnoDB存储引擎的内存管理
Apr 08 MySQL
MySQL查询学习之基础查询操作
May 08 MySQL
MySQL 存储过程的优缺点分析
May 20 MySQL
MySQL 查询速度慢的原因
May 25 MySQL
MySQL Router实现MySQL的读写分离的方法
May 27 MySQL
解决Navicat for Mysql连接报错1251的问题(连接失败)
May 27 MySQL
MySQL8.0的WITH查询详情
Aug 30 MySQL
MySQL中的隐藏列的具体查看
Sep 04 MySQL
Mysql如何实现不存在则插入,存在则更新
Mar 25 MySQL
MySQL深分页问题解决思路
Dec 24 MySQL
MySQL索引失效十种场景与优化方案
May 08 MySQL
详细聊聊关于Mysql联合查询的那些事儿
Oct 24 #MySQL
mysql事务对效率的影响分析总结
Oct 24 #MySQL
mysql事务隔离级别详情
mysql主从复制的实现步骤
记一次Mysql不走日期字段索引的原因小结
Oct 24 #MySQL
Mysql关于数据库是否应该使用外键约束详解说明
Oct 24 #MySQL
MySQL七种JOIN类型小结
You might like
php下使用SimpleXML 处理XML 文件
2010/02/27 PHP
PHP rsa加密解密使用方法
2015/04/27 PHP
Laravel 关联模型-关联新增和关联更新的方法
2019/10/10 PHP
Laravel框架下的Contracts契约详解
2020/03/17 PHP
基于Asp.net与Javascript控制的日期控件
2010/05/22 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
2013/10/15 Javascript
JavaScript支持的最大递归调用次数分析
2014/06/24 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
Node.js的特点详解
2017/02/03 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
2017/03/10 Javascript
NodeJs安装npm包一直失败的解决方法
2017/04/28 NodeJs
vue如何解决循环引用组件报错的问题
2018/09/22 Javascript
vue input输入框关键字筛选检索列表数据展示
2020/10/26 Javascript
Electron + vue 打包桌面操作流程详解
2019/06/24 Javascript
js计算最大公约数和最小公倍数代码实例
2019/09/11 Javascript
解决Layui 表格自适应高度的问题
2019/11/15 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
2020/03/14 Javascript
python的id()函数介绍
2013/02/10 Python
python逐行读写txt文件的实例讲解
2018/04/03 Python
对python实现二维函数高次拟合的示例详解
2018/12/29 Python
Python图像滤波处理操作示例【基于ImageFilter类】
2019/01/03 Python
Python图像处理之图片文字识别功能(OCR)
2019/07/30 Python
Pytorch mask-rcnn 实现细节分享
2020/06/24 Python
python打包多类型文件的操作方法
2020/09/21 Python
CSS3中的@keyframes关键帧动画的选择器绑定
2016/06/13 HTML / CSS
HTML5页面无缝闪开的问题及解决方案
2020/06/11 HTML / CSS
美国宠物护理专家:Revival Animal Health
2020/01/05 全球购物
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
大学生翘课检讨书范文
2014/10/06 职场文书
党员干部三严三实心得体会
2014/10/13 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
2014年数学教师工作总结
2014/12/03 职场文书
优秀团员个人总结
2015/02/26 职场文书
信息技术国培研修日志
2015/11/13 职场文书
利用html+css实现菜单栏缓慢下拉效果的示例代码
2021/03/30 HTML / CSS
Python获取江苏疫情实时数据及爬虫分析
2021/08/02 Python