淘先锋技术网

首页 1 2 3 4 5 6 7

前言:本文讲述将 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.安装后进入检查阶段,查看数据库配置是否正常,验证业务是否受阻等。

目录

tips:安装后将修复以下漏洞,创作不易点个赞吧!谢谢。

一、准备工作

 二、开始安装

1.上传至服务器中mysqlupdate文件夹中(注意对照文件大小,核对是否传输完整)。 

​编辑2.查看当前mysql版本,执行如下sql保障数据的完整性。

 3.备份数据库和my.cnf 文件

4.停止数据库,使用rpm -ivh进行安装,注意安装顺序。

5.启动数据库及检查

 三、总结


tips:安装后将修复以下漏洞,创作不易点个赞吧!谢谢。

序号漏洞名称风险等级CVE编号受影响版本
1Oracle MySQL Server Server DML 安全漏洞(CVE-2020-14828)[高]CVE-2020-14828 8.0.21 及之前版本存在安全漏洞
2Oracle MySQL cURL 组件输入验证错误漏洞(CVE-2022-27778)[高]CVE-2022-27778受影响的受支持版本为 5.7.38 及更早版本和 8.0.29 及更早版本
3Oracle MySQL Server 输入验证错误漏洞(CVE-2021-22926)[高]CVE-2021-229265.7.35 及更早版本、8.0.26 及更早版本
4Oracle MySQL Server 安全漏洞(CVE-2020-14663)[高]CVE-2020-146638.0.20 及更早版本
5Oracle MySQL Server 安全漏洞(CVE-2020-14678)[高]CVE-2020-146788.0.20 及更早版本
6Oracle MySQL Server 缓冲区溢出漏洞(CVE-2021-3711)[高]CVE-2021-37115.7.35 及更早版本、8.0.26 及更早版本
7Oracle MySQL Server 安全漏洞(CVE-2020-14697)[高]CVE-2020-146978.0.20及之前版本
8Oracle MySQL Server 代码问题漏洞(CVE-2020-28196)[高]CVE-2020-28196 8.0.23及之前版本。
9Oracle MySQL/MariaDB Packaging (OpenSSL)全漏洞(CVE-2022-0778)[高]CVE-2022-07788.0.28 及更早版本
10Oracle MySQL Server安全漏洞(CVE-2019-17543)[高]CVE-2019-175435.7.34 and prior, 8.0.25 and prior
11Oracle MySQL Server安全漏洞(CVE-2021-22901)[高]CVE-2021-229015.7.34 and prior, 8.0.25 and prior
12Oracle MySQL/MariaDB Server 输入验证错误漏洞(CVE-2021-2144)[高]CVE-2021-21445.7.29 and prior, 8.0.19 and prior
13Oracle MySQL Server 安全漏洞(CVE-2020-1967)[高]CVE-2020-19678.0.20及之前版本
14Oracle MySQL Server 输入验证错误漏洞(CVE-2022-21278)[高]CVE-2022-21278 8.0.26 及更早版本
15Oracle MySQL Server 输入验证错误漏洞(CVE-2021-35610)[高]CVE-2021-35610 8.0.26 及更早版本
16Oracle MySQL Server 输入验证错误漏洞(CVE-2021-36222)[高]CVE-2021-362228.0.26 and prior 
17Oracle MySQL openssl 组件输入验证错误漏洞(CVE-2022-1292)[高]CVE-2022-12925.7.38 and prior, 8.0.29 and prior
18Oracle MySQL Server组件安全漏洞(CVE-2019-5482)[高]CVE-2019-54825.7.28 and prior, 8.0.18 and prior 
19Oracle MySQL Server 信息泄露漏洞(CVE-2021-22946)[高]CVE-2021-229465.7.36 and prior, 8.0.27 and prior
20Oracle MySQL Server 输入验证错误漏洞(CVE-2021-35583)[高]CVE-2021-35583 8.0.25 and prior
21Oracle MySQL Server 输入验证错误漏洞(CVE-2022-21351)[高]CVE-2022-213518.0.27 and prior
22Oracle MySQL 安全漏洞(CVE-2022-21600)[高]CVE-2022-216008.0.27 and prior
23Oracle MySQL Server Server 安全漏洞(CVE-2020-14878)[高]CVE-2020-148788.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');