MySQL数据库5.7升级到8.0版本

前言

由于现有MySQL数据库版本存在大量漏洞,打补丁的成本太高(ps:要花钱),故对数据库进行版本升级,达到漏洞修复的目的。


一、升级前准备及注意事项

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

默认字符集由latin1变为utf8mb4。
MyISAM系统表全部换成InnoDB表。
JSON特性增强。
支持不可见索引,支持直方图。
sql_mode参数默认值变化。
默认密码策略变更。
新增角色管理。
支持窗口函数,支持Hash join。

二、升级过程

1.官网下载对应版本的tar包

可打开MySQL数据库官网下载对应版本tar包。
在这里插入图片描述此处提供8.0.25直链下载地址,直接复制到浏览器即可下载。

https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz

2.解压数据库安装包

# 安装包上传至原安装包目录下 我的是/usr/local/ 
cd /usr/local/

# 解压安装包
xz -d mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.19-linux-glibc2.12-x86_64.tar

# 文件夹重命名为mysql8 
mv mysql-8.0.19-linux-glibc2.12-x86_64 mysql8

# 更改文件夹所属
chown -R mysql.mysql /usr/local/mysql8/

3.修改配置my.cnf 配置文件

因5.7版本与8.0版本参数有所不同,为了能顺利升级,我们需要更改部分配置参数。主要注意sql_mode,其他参数最好还是按照原5.7的来,不需要做调整。下面仅展示基础配置文件:

[mysqld]       
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
symbolic-links=0
lower_case_table_names=1

#!!!!!如下配置是升级8.0版本后需要修改的内容!!!!
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
default_authentication_plugin=mysql_native_password

4.关闭MySQL5.7数据库

提示:升级前建议全库备份。如备份压缩MySQL数据库的datadir等。(数据无价请谨慎操作)
命令行登陆MySQL数据库

[root@centos ~]# mysql -uroot -p

成功登陆后,关闭MySQL5.7数据库:


#查看当前数据库版本确定是否登陆错误
mysql> select version();
+------------+
| version()  |
+------------+
| 5.7.23-log |
+------------+
1 row in set (0.00 sec)

mysql> show variables like 'innodb_fast_shutdown';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| innodb_fast_shutdown | 1     |
+----------------------+-------+
1 row in set (0.00 sec)
# 确保数据都刷到硬盘上,更改成0
mysql> set global innodb_fast_shutdown=0;
Query OK, 0 rows affected (0.00 sec)

mysql> shutdown;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye

5.启动MySQL 8.0.25 数据库

[root@centos ~]# /usr/local/mysql8/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql & 
[1] 23333
[root@centos ~]# 2022-04-01T07:07:02.337626Z mysqld_safe Logging to '/var/log/mysqld.log'.
2022-04-01T07:07:02.366244Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

观察日志看是否报错,若无报错可重新登录数据库进行测试

[root@centos ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8832
Server version: 8.0.25 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.25    |
+-----------+
1 row in set (0.00 sec)

6.环境变量修改

(1)修改/usr/local/mysql8/support-files/mysql.server配置中basedir目录

#即数据库安装目录
basedir=/usr/local/mysql8
#替换原有mysql启动文件
[root@centos ~]#cp /usr/local/mysql8/support-files/mysql.server /etc/init.d/mysql

(2)修改/etc/profile 下PATH变量:

export PATH=$PATH:/usr/local/mysql8/bin
# 生效验证
[root@centos ~]# source /etc/profile
[root@centos ~]# which mysql
/usr/local/mysql8/bin/mysql


总结

至此,MySQL数据库已由5.7成功升级至8.0!

  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值