mysql漏洞修复

6-23 234 views

1、方式

  • 打补丁:官方提供的补丁链接需要有MOS(My Oracle Support)账号才能下载;

  • 升级版本:采用小版本必须升级,大版本根据项目选择升级与否,根据漏洞提示选择合适的升级版本;

2、升级版本

a、备份数据库

查看数据存放路径参数datadir:

cat /etc/my.cnf(一般都放在这里,如果不是,则用locate命令搜索一下)

查看数据表总大小,以免拷贝时空间不够:

mysql> use information_schema;
mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES;

查看mysql.sock路径:

netstat -ln | grep mysql

备份数据库数据,(替换相关参数值,文件夹不存在需用mkdir命令创建):

mysqldump -u<username> -p<password> -S mysql.sock -F -A -B |gzip >/home/user/backup/20191029/mysqlbak.sql.gz

注意:mysql用mysqldump导出数据库时提示“-- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.”,解决:

加上--events \ -E (这样就会备份事件表)

加上--ignore-table=mysql.event (这样就显示地不会备份事件表)

b、备份配置文件(自行替换相关路径)

cp mysql/*.cnf /home/user/backup/20191029/

c、lnmp升级mysql脚本

lnmp目录执行:

./upgrade.sh mysql

需要输入MySQL root密码进行验证,验证不通过将无法进行升级,验证通过后可以到http://dev.mysql.com/downloads/mysql/ 获取MySQL的版本号,输入后回车确认,如要启用Innodb,输入y, 回车确认,再次回车确认即可开始升级。会在/root 目录下生成mysql_upgrade日期.log的日志文件,供出错时排查。
如升级失败恢复:

(1.4及更高版本)将/usr/local/oldmysql日期目录下面的init.d.mysql.bak.日期的文件拷贝到/etc/init.d/目录下并重命名为mysql及将my.cnf.bak.日期拷贝到/etc/目录下并重命名为 my.cnf,并将/usr/local/oldmysql日期目录重命名为mysql即可恢复mysql。

(1.3及以下版本)将/etc/下的my.conf.bak.日期的配置文件重命名为my.cnf和/etc/init.d/下的mysql.bak.日期重命名为mysql,同时将/usr/local/下的oldmysql日期目录重命名为mysql即可恢复。


参考文章

记一次mysql小版本升级

mysqldump: Got error: 2002: Can't connect to local MySQL server through sock

http://- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.

LNMP 1.2/1.3或更高版本升级Nginx、MySQL/MariaDB、PHP教程

欢迎留言