记一次 MySQL 数据库遭比特币病毒处理方法
经过
某日上午,发现公司的某个项目的测试服务器上的项目数据库突然消失,当时并没有找到消失,随后开启了MySQL—binlog日志记录数据库的所有操作。
两天之后数据库中的数据又消失,查看数据库中出现
追查
通过查看日记发现有来自香港的警告IP
2022-05-09T07:10:23.227906Z 1769 [Warning] IP address '14.136.219.166' has been resolved to the host name '014136219166.static.ctinets.com', which resembles IPv4-address itself.
恢复数据库
登录
数据库遭到攻击之后,是登录不上数据库的,需要登录服务器配置mysql免密登录
-
停止mysql服务
-
修改mysql配置后
找到my.ini文件,在[mysqld] 下面添加
skip-grant-tables
然后重启mysql服务
- 登录数据库添加root用户
- 配置root用户可以远程连接之后刷新权限
恢复数据
由于上次开启binlog,我们通过binlog来恢复数据
-
查看binlog地址
-
将binlog文件导出成sql文件
mysqlbinlog --no-defaults --database=dbName --base64-output=decode-rows mysql_bin.000001 >d:/my.sql
-
下载到本地,看一下内容,发现是从220507 11:54:41开始删库的,直接就 DROP 了
-
通过 binlog 恢复一下数据库。
# --start-position="219" 第一次操作库的偏移量
# --stop-position="9134862" 找一个卸库前的偏移量
mysqlbinlog --no-defaults mysql_bin.000001 --start-position="219" --stop-position="9134862" | mysql -u root -p
回车->输入密码->回车 检查数据库发现表都还原回来了
安全设置
- 修改 root 登录密码 ,密码尽量复杂
- 关掉外网访问改用 ssh
- 为不同的岗位分配不同的操作用户
- 禁止开放3306端口