mysql数据库漏洞修复方案之数据库版本升级
Centos7 二进制方式安装的mysql5.7.30升级为5.7.38 解决CVE-2021-22946漏洞
一、背景
由于进行安全扫描,发现mysql存在漏洞,高危漏洞编号为(CVE-2021-22946),此外还有多个中危,低危漏洞,目前mysql版本为5.7.30。
二、升级前须知
1.linux服务器中的mysql均为解压版,而非rpm安装包版。
2.官方支持的升级路径
同一个大版本中的小版本升级,比如5.7.30到5.7.38。
跨版本升级,但只支持跨一个版本升级,比如5.5到5.6,5.6到5.7。
不支持跨版本的直接升级,比如直接从5.5到5.7,可以先从5.5升级到5.6,再从5.6升级到5.7。
3.解压版的mysql升级,千万切记不要执行安装操作,这样会导致数据库文件全部丢失。
三、mysql下载
mysql官网下载
MySQL :: Download MySQL Community Server (Archived Versions)
四、具体步骤
4.1备份
查看目前版本:mysql -V
4.1.1备份数据文件和配置文件(可以不备份,此处以防万一)
查看数据目录:
cat /etc/my.cnf | grep datadir
备份:
tar -zcvf mysql.bak.tar.gz /usr/local/mysql/data
cp /etc/my.cnf /etc/my.cnf.bak
4.2升级
4.2.1关闭当前mysql服务
service mysql stop
直到下面这行命令没有返回数据,开始升级数据库
ps -ef |grep mysql | grep -v color
4.2.2删除安装位置的mysql
找到对应的安装目录(basedir)并删除:
rm -rf /usr/local/mysql
注:如果数据文件夹/日志等和basedir在同一目录下则数据文件夹,日志文件夹等非官方解压文件不删除!不要执行上面命令,需要自己到basedir里单个删除需要替换的文件夹!!
4.2.3解压并移动覆盖老版本文件,并重新授权
tar -zxvf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.38-linux-glibc2.12-x86_64/** /usr/local/mysql
chown -R mysql.mysql /usr/local/mysql/
4.3启动
4.3.1 添加开机启动mysql服务并启动mysql(开机自启这个步骤可以跳过,防止启动脚本不一样)
重新添加开机启动(可以跳过,此处防止2个版本启动脚本不一致):
rm -rf /etc/init.d/mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
4.3.2 启动
service mysql start
####################################################################
#######################################################################
mkdir mysql-backup
cd mysql-backup
mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p
备份MySQL设置
1
|
cd mysql-backup
|
3 添加MySQL APT
下载mysql-apt-config_0.8.13-1_all.deb:https://dev.mysql.com/downloads/repo/apt/
安装:
1
|
|
4 安装新版的MySQL
1
|
service mysql stop # 先停了MySQL service
|
最后检查下升级后的版本:
mysql -V
|
显示:
mysql Ver 8.0.17 for Linux on x86_64 (MySQL Community Server - GPL)
|
已经升级成功。