### mysql版本信息暴露
公司mysql可以获取到版本信息,因此公司让隐藏版本信息,网上收到当地之后(将mysqld中版本号强制改为不存在的版本号),在修改并执行restart命令之后,发现mysql重启失败,报错信息如下
网上搜索该异常,发现很少遇到此问题,并且遇到此问题的人也都是在用户登录的时候发生,解决方法是修改mysql源代码并重新编译源码,由于这个mysql不是源码自行编译安装的(据说是yum安装—后面会说为什么是“据说”)
1. 排查无果只能关闭mysql,因为mysql数据是备份了的,因此打算安装一个mysql最新版本并将原数据导入即可
2. 现有版本的卸载,据开发人员说使用yum安装的,但是我查找yum安装包没有找到
通过rpm查找却又找到了
于是我开始按照顺序卸载,最后又发现有几个rpm包始终卸载不了,每次卸载命令执行都报错,提示缺少依赖……!
想来想去我也不可能为了卸载又去装很多东西,最后我又再次尝试了以下yum查找安装报的方法,结果又找到了剩下几个未卸载完成的rpm包!于是我赶紧通过yum卸载mysql的命令将剩余的rpm包卸载掉了,果然在yum卸载的过程中下载并安装了很多东西。
3. 安装docker环境,通过docker安装mysql---让运维安装的(下图为mysql镜像启动命令,包含root用户名密码),接下来开始数据导入和授权:
通过docker inspect mysql-prod命令,查看容器磁盘挂载情况
于是我将*.sql文件放到本地磁盘的/app1/docker/mysql/data下,这样在容器中可以在/var/lib/mysql/中得到sql文件
通过docker exec -it d5c522589a0a /bin/bash 进入容器
- 在容器中通过mysql -u root -p 命令以及按提示输入密码之后,创建数据库并进入数据库之后,通过source /var/lib/mysql/*.sql 命令将sql中的数据全部导入数据库中。
- 进行一系列mysql的常规操作,创建用户、授予用户权限等。
- 到k8s中查看所有使用到当前数据库的项目,项目数据恢复正常(数据库连接池有重连机制)
4. 数据库备份脚本
编写docker环境下mysql备份脚本,利用linux的crontab命令 创建并指定定时执行当前脚本,crontab -e 进入编辑页面(crontab -l显示当前linux服务器中所有定时任务),如下所示,指定脚本在每天凌晨5点执行,并将脚本的输出信息重定向到指定文件中————编辑器的推出方式与vi编辑器一致。
00 05 * * * cd /usr/local/mysqlBack; sh mysqlDockerBack.sh >> mysqlback.log 2 >> mysqlback.log