MySQL5直接到8_MySQL5.7升级到8.0过程详解

**前言:**

不知不觉,MySQL8.0已经发布好多个GA小版本了。目前互联网上也有很多关于MySQL8.0的内容了,MySQL8.0版本基本已到稳定期,相信很多小伙伴已经在接触8.0了。本篇文章主要介绍从5.7升级到8.0版本的过程及注意事项,有想做版本升级的小伙伴可以参考下。

#### 1.升级前准备及注意事项

首先,我们要大概了解下MySQL5.7和8.0有哪些不同,参考官方文档和其他网友文章,概括总结出MySQL8.0以下几点新特性:

- 默认字符集由latin1变为utf8mb4。

- MyISAM系统表全部换成InnoDB表。

- JSON特性增强。

- 支持不可见索引,支持直方图。

- sql_mode参数默认值变化。

- 默认密码策略变更。

- 新增角色管理。

- 支持窗口函数,支持Hash join。

根据版本变化及官方升级教程,列举出以下几点注意事项:

- 注意字符集设置。为了避免新旧对象字符集不一致的情况,可以在配置文件将字符集和校验规则设置为旧版本的字符集和比较规则。

- 密码认证插件变更。为了避免连接问题,可以仍采用5.7的mysql_native_password认证插件。

- sql_mode支持问题。8.0版本sql_mode不支持NO_AUTO_CREATE_USER,要避免配置的sql_mode中带有NO_AUTO_CREATE_USER。

- 是否需要手动升级系统表。在MySQL 8.0.16版本之前,需要手动的执行mysql_upgrade来完成该步骤的升级,在MySQL 8.0.16版本及之后是由mysqld来完成该步骤的升级。

#### 2.具体升级过程

下面以Linux系统为例,展示下具体升级过程。我的系统是CentOS7.7,原版本是MySQL5.7.23,以In-Place方式直接升级到MySQL8.0.19。

**2.1 下载解压安装包**

官网下载对应版本的tar包,可通过wget下载或者本地下载后上传。

> 下载地址:

> https://downloads.mysql.com/archives/community/

> 选择mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz

![image.png](https://cdn.nlark.com/yuque/0/2020/png/119537/1589955685428-2a8b723e-505c-4952-8419-c2a2a67a3eb4.png#align=left&display=

你可能感兴趣的:(MySQL5直接到8)