突然数据库被黑了,有一条勒索信息:
To recover your lost Database send 0.018 Bitcoin (BTC) to our Bitcoin address: bc1qe4yefrptv2k8shawu3h84j0n8kyvxfk4wwate5 After this, contact us by email with your Server IP or Domain Name and a Proof of Payment (Payment ID). Your Database is downloaded and backed up on our servers. Backups that we have right now: tiku. Any email without your server IP Address or Domain Name and a Proof of Payment together will be ignored. If we dont receive your payment in the next 5 Days, we will delete or leak your sensitive information.
说到底,还是自身安全做的不够,反思!
先说解决方法。
是否开启binlog
先进入mysql命令行,输入以下命令。
SHOW VARIABLES LIKE 'log_bin%';
可以看到,logbin已经是开启的,并且下方是logbin所在的目录
进入logbin的目录
cd /www/server/data
ls -l
这些bin文件,就是我们的logbin。
我们可以通过修改时间,判断哪个一出现了问题(我发现问题时是1月18日,刚好这个修改日期就是这个)
ps: 因为之后我修改过,所以时间变了,但是日期是同一天。
找到mysqlbinlog 的位置
find / -name mysqlbinlog -print
如果/usr/bin没有,可以软连接一下。
导出sql文件
mysqlbinlog --no-defaults -v --base64-output=decode-rows mysql-bin.000012 > nov3.sql
#替换你的logbin文件名,和想要输出的sql文件名
打开sql文件
寻找被删除点
直接翻到末尾,可以看到全部给drop了。
我们先找到在哪里开始删除我们数据库。
因为数据库多了一个新建的,从这里开始下手,ctrl+F搜索。
可以看到从这里开始创建数据库,并创建了readme表。
根据上面的时间,可以推断出,这里是开始删除我们数据库的位置。
记下删除时的偏移量:11177392
寻找起始位置
起始位置偏移量,在头部:4
开始恢复
# --start-position="4" 起始位置偏移量
# --stop-position="11177392" 删库时候的偏移量
mysqlbinlog --no-defaults mysql-bin.000012 --start-position="4" --stop-position="11177392" | mysql -u root -p
输入root密码,回车即可。
中途可能报很多错,可能是数据量太大引起的错误,或者是重复插入之类的,都是sql脚本本身的问题,找到对应的问题就可以解决。