MySQL8.0升级的踩坑历险记
来源:脚本之家
时间:2023-01-07 12:08:47 146浏览 收藏
知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个数据库开发实战,手把手教大家学习《MySQL8.0升级的踩坑历险记》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!
刚好遇到需要从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实际使用的过程中发现用户授权和之前版本有点不同,需要分三步:
- 创建用户。
- 分配权限。
- 刷新权限。
具体的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升级的踩坑历险记》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多数据库知识!
-
118 收藏
-
324 收藏
-
233 收藏
-
236 收藏
-
368 收藏
-
475 收藏
-
266 收藏
-
273 收藏
-
283 收藏
-
210 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习
-
- 无聊的大碗
- 这篇博文真及时,细节满满,很有用,已收藏,关注作者大大了!希望作者大大能多写数据库相关的文章。
- 2023-06-06 13:42:19
-
- 啊啊啊啊
- 太给力了,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,帮助很大,总算是懂了,感谢作者大大分享文章!
- 2023-01-22 16:43:38
-
- 想人陪的茉莉
- 受益颇多,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,帮助很大,总算是懂了,感谢楼主分享技术贴!
- 2023-01-21 08:11:33
-
- 威武的荷花
- 细节满满,收藏了,感谢师傅的这篇博文,我会继续支持!
- 2023-01-20 23:37:37
-
- 可靠的路人
- 这篇文章内容太及时了,细节满满,很好,码起来,关注作者大大了!希望作者大大能多写数据库相关的文章。
- 2023-01-09 02:23:15