劳务系统主机存在如下漏洞
Oracle MySQL Server 安全漏洞(CVE-2019-5443);
Oracle MySQL Server组件安全漏洞(CVE-2019-5482);
Oracle MySQL/MariaDB 拒绝服务漏洞(CVE-2021-2011)
主机使用mysql版本为5.7.27
厂商补丁:
Oracle已经为此发布了一个安全公告(2021-01-19)以及相应补丁:
2021-01-19:Oracle Critical Patch Update Advisory - January 2021
链接:https://www.oracle.com/security-alerts/cpujan2021.html
目前厂商已发布升级补丁以修复漏洞,补丁获取链接:
https://www.oracle.com/security-alerts/cpuapr2020.html
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k4umIElr-1661178113315)(https://gitee.com/lofxve/pic-go/raw/master/img/image-20220107135355483.png)]
对mysql进行小版本升级到>=8.0.27,生产环境无法联网,用rpm 包离线安装,选择就地升级。
就地升级(In-place Upgrade)
关闭旧版本mysql,用新的替换旧的二进制文件或软件包,在现有数据目录上重启数据库,执行mysql_upgrade
逻辑升级(Logical Upgrade)
使用备份或导出实用程序(如mysqldump,Xtrabackup)从旧mysql实例导出SQL ,安装新的mysql数据库版本,再将SQL应用于新的mysql实例。
同一个大版本中的小版本升级,比如5.7.25到5.7.28。
跨版本升级,但只支持跨一个版本升级,比如5.5到5.6,5.6到5.7。
不支持跨版本的直接升级,比如直接从5.5到5.7,可以先从5.5升级到5.6,再从5.6升级到5.7。
cp -r /usr/local/mysql/data/ /usr/local/data
find / -name mysql
rm -rf 上面查出的文件夹
使用以下命令查看当前安装mysql情况,查找以前是否装有mysql
rpm -qa|grep -i mysql
停止mysql服务、删除之前安装的mysql
删除命令:rpm -e –nodeps 包名
rpm -ev MySQL-client-5.5.25a-1.rhel5
rpm -ev MySQL-server-5.5.25a-1.rhel5
如果提示依赖包错误,则使用以下命令尝试:
rpm -ev MySQL-client-5.5.25a-1.rhel5 --nodeps
如果提示错误:error: %preun(xxxxxx) scriptlet failed, exit status 1
则用以下命令尝试:
rpm -e --noscripts MySQL-client-``5.5``.25a-``1``.rhel5
查找之前老版本mysql的目录、并且删除老版本mysql的文件和库
find / -name mysql
rm -rf /var/lib/mysql
再次查找机器是否安装mysql
rpm -qa|grep -i mysql
wget --no-check-certificate https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
xz -dk mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
mv mysql-8.0.27-linux-glibc2.12-x86_64 /usr/local/mysql8
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
chown -R mysql:mysql /usr/local/mysql8
cd /usr/local/mysql8/support-files
cp mysql.server /etc/init.d/mysql
vim /etc/init.d/mysql
basedir=/usr/local/mysql8
datadir=/usr/local/mysql/data
vim /etc/my.cnf 可以不改变原来的文件
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[database]
character_set_database=utf8mb4
[mysqld]
bind-address=0.0.0.0
transaction-isolation=READ-COMMITTED
server-id=1
log-bin
log_bin_trust_function_creators=1
port=3306
max_connect_errors=99999
max_error_count=65535
character-set-server=utf8mb4
max_connections=9999
max_user_connections=8888
wait_timeout=31536000
interactive_timeout=31536000
innodb_buffer_pool_size=128M
innodb_buffer_pool_instances=1
innodb_buffer_pool_chunk_size=128M
max_allowed_packet=100M
sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
/etc/init.d/mysql start
mysql -uroot -p
如果出现:-bash: mysql: command not found
就执行: # ln -s /usr/local/mysql8/bin/mysql /usr/bin --没有出现就不用执行
输入之前初始化生成的密码,登录成功,至此安装完毕!
cd /etc/init.d/
chmod +x mysql
chkconfig --add mysql
chkconfig --list
chkconfig --level 345 mysql on