前言:本文讲述将 mysql8.0.x 升级到最新版本以修复以下漏洞。 按照本方法升级,配置文件及数据库结构内容依旧存在(为了保险起见还是需要将my.cnf 和 数据库结构导出以防出现问题)。
思路:
1.备份my.cnf 使用 mysqldump导出数据结构文件(注意导出前暂停对数据库的读写业务)
2.准备旧版本rpm包,并提前模拟一遍,以防不测。(可参考我这写这篇文章:centos 离线安装 percona mysql 8.0.18,rpm构建安装思路。_青凯平的博客-CSDN博客)
3.下载新版本的基础构建rpm,使用rpm -ivh *.rpm --replacefiles 进行安装(--replacefiles 替换属于其它软件包的文件)
4.安装后进入检查阶段,查看数据库配置是否正常,验证业务是否受阻等。
目录
1.上传至服务器中mysqlupdate文件夹中(注意对照文件大小,核对是否传输完整)。
编辑2.查看当前mysql版本,执行如下sql保障数据的完整性。
4.停止数据库,使用rpm -ivh进行安装,注意安装顺序。
tips:安装后将修复以下漏洞,创作不易点个赞吧!谢谢。
序号 | 漏洞名称 | 风险等级 | CVE编号 | 受影响版本 |
1 | Oracle MySQL Server Server DML 安全漏洞(CVE-2020-14828) | [高] | CVE-2020-14828 | 8.0.21 及之前版本存在安全漏洞 |
2 | Oracle MySQL cURL 组件输入验证错误漏洞(CVE-2022-27778) | [高] | CVE-2022-27778 | 受影响的受支持版本为 5.7.38 及更早版本和 8.0.29 及更早版本 |
3 | Oracle MySQL Server 输入验证错误漏洞(CVE-2021-22926) | [高] | CVE-2021-22926 | 5.7.35 及更早版本、8.0.26 及更早版本 |
4 | Oracle MySQL Server 安全漏洞(CVE-2020-14663) | [高] | CVE-2020-14663 | 8.0.20 及更早版本 |
5 | Oracle MySQL Server 安全漏洞(CVE-2020-14678) | [高] | CVE-2020-14678 | 8.0.20 及更早版本 |
6 | Oracle MySQL Server 缓冲区溢出漏洞(CVE-2021-3711) | [高] | CVE-2021-3711 | 5.7.35 及更早版本、8.0.26 及更早版本 |
7 | Oracle MySQL Server 安全漏洞(CVE-2020-14697) | [高] | CVE-2020-14697 | 8.0.20及之前版本 |
8 | Oracle MySQL Server 代码问题漏洞(CVE-2020-28196) | [高] | CVE-2020-28196 | 8.0.23及之前版本。 |
9 | Oracle MySQL/MariaDB Packaging (OpenSSL)全漏洞(CVE-2022-0778) | [高] | CVE-2022-0778 | 8.0.28 及更早版本 |
10 | Oracle MySQL Server安全漏洞(CVE-2019-17543) | [高] | CVE-2019-17543 | 5.7.34 and prior, 8.0.25 and prior |
11 | Oracle MySQL Server安全漏洞(CVE-2021-22901) | [高] | CVE-2021-22901 | 5.7.34 and prior, 8.0.25 and prior |
12 | Oracle MySQL/MariaDB Server 输入验证错误漏洞(CVE-2021-2144) | [高] | CVE-2021-2144 | 5.7.29 and prior, 8.0.19 and prior |
13 | Oracle MySQL Server 安全漏洞(CVE-2020-1967) | [高] | CVE-2020-1967 | 8.0.20及之前版本 |
14 | Oracle MySQL Server 输入验证错误漏洞(CVE-2022-21278) | [高] | CVE-2022-21278 | 8.0.26 及更早版本 |
15 | Oracle MySQL Server 输入验证错误漏洞(CVE-2021-35610) | [高] | CVE-2021-35610 | 8.0.26 及更早版本 |
16 | Oracle MySQL Server 输入验证错误漏洞(CVE-2021-36222) | [高] | CVE-2021-36222 | 8.0.26 and prior |
17 | Oracle MySQL openssl 组件输入验证错误漏洞(CVE-2022-1292) | [高] | CVE-2022-1292 | 5.7.38 and prior, 8.0.29 and prior |
18 | Oracle MySQL Server组件安全漏洞(CVE-2019-5482) | [高] | CVE-2019-5482 | 5.7.28 and prior, 8.0.18 and prior |
19 | Oracle MySQL Server 信息泄露漏洞(CVE-2021-22946) | [高] | CVE-2021-22946 | 5.7.36 and prior, 8.0.27 and prior |
20 | Oracle MySQL Server 输入验证错误漏洞(CVE-2021-35583) | [高] | CVE-2021-35583 | 8.0.25 and prior |
21 | Oracle MySQL Server 输入验证错误漏洞(CVE-2022-21351) | [高] | CVE-2022-21351 | 8.0.27 and prior |
22 | Oracle MySQL 安全漏洞(CVE-2022-21600) | [高] | CVE-2022-21600 | 8.0.27 and prior |
23 | Oracle MySQL Server Server 安全漏洞(CVE-2020-14878) | [高] | CVE-2020-14878 | 8.0.21 and prior |
一、准备工作
下载percona mysql (以下简称mysql)基础构建包,并上传至服务器中。
下载地址:Downloads - Percona
下载内容:一般下载这几个基础构建即可。
percona-icu-data-files-8.0.32-24.1.el7.x86_64.rpm
percona-server-shared-8.0.32-24.1.el7.x86_64.rpm
percona-server-client-8.0.32-24.1.el7.x86_64.rpm
percona-server-shared-compat-8.0.32-24.1.el7.x86_64.rpm
percona-server-server-8.0.32-24.1.el7.x86_64.rpm
二、开始安装
1.上传至服务器中mysqlupdate文件夹中(注意对照文件大小,核对是否传输完整)。
2.查看当前mysql版本,执行如下sql保障数据的完整性。
# 登录mysql
[root@docker mysqlupdate]# mysql -u root -p
# 查看未升级前的版本
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.18-9 |
+-----------+
1 row in set (0.00 sec)
# 停止数据库会写到硬盘(只要确保数据库没有读写就可以了,有条件的话可以关闭业务机,否则可能会占用数据库导致失败)
mysql> set global innodb_fast_shutdown=0;
Query OK, 0 rows affected (0.00 sec)
执行结果如图:
3.备份数据库和my.cnf 文件
# 备份数据库 mysqldump -u root -p 数据库名 > 路径.sql
[root@docker mysqlupdate]# mysqldump -u root -p ninjia >/home/backup/ninjia_backup.sql
Enter password:
一般my.cnf 文件在/etc 下面 ,也可以使用find / -name "my.cnf" 来查找它。
[root@docker mysqlupdate]# find / -name "my.cnf"
/etc/my.cnf
# 备份配置文件
[root@docker mysqlupdate]# cp /etc/my.cnf /home/backup/my.cnf.bak
4.停止数据库,使用rpm -ivh进行安装,注意安装顺序。
systemctl stop mysql && systemctl status mysql
# 按顺序安装
rpm -ivh percona-server-shared-compat-8.0.32-24.1.el7.x86_64.rpm --replacefiles
rpm -ivh percona-server-shared-8.0.32-24.1.el7.x86_64.rpm --replacefiles
rpm -ivh percona-server-client-8.0.32-24.1.el7.x86_64.rpm --replacefiles
rpm -ivh percona-icu-data-files-8.0.32-24.1.el7.x86_64.rpm --replacefiles
rpm -ivh percona-server-server-8.0.32-24.1.el7.x86_64.rpm --replacefiles
执行结果如图可自行对照。
查看是否安装成功,rpm -qa | grep percona
5.启动数据库及检查
[root@docker mysqlupdate]# systemctl daemon-reload && systemctl start mysql
[root@docker mysqlupdate]# systemctl status mysql
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.32-24 |
+-----------+
1 row in set (0.00 sec)
执行结果如图,可自行对照。
三、总结
采用本方法,简单便捷,升级多次暂未出现问题。使用之前可以模拟环境再跑一遍,非常荣幸可以为您提供帮助!
附件资料:
# 以下是关于sql的模拟数据,为了方便大家测试,提供给大家。
create database ninjia;
use ninjia;
create table student(
sno int(8)primary key auto_increment,
sname varchar(20) not null,
age int(2),
sex varchar(1) default '男',
phone varchar(30) unique
);
insert into student(sno,sname,age,sex,phone)
values(1,'老二',23,'男','123456789');