前言
不知不觉,MySQL 8.0 已经有好多个 GA 小版本了。目前互联网上也有很多关于 MySQL 8.0 的内容了,MySQL 8.0 版本基本已到稳定期,相信很多小伙伴已经在接触 8.0 了。本篇文章主要介绍从 5.7 升级到 8.0 版本的过程及注意事项。
升级前准备及注意事项
首先,我们要大概了解下 MySQL 5.7 和 8.0 有哪些不同,参考官方文档和其他网友文章,概括总结出 MySQL 8.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来完成该步骤的升级。
具体升级过程
下面以 Linux 系统

