【已恢复】服务器MySQL被入侵,数据丢失恢复

背景:当时在宝塔安装了MySQL5.7,然后当时只是测试,就直接设置用户名和密码为root,今天在Navicat突然登录不上了,于是在linux下登录MySQL,只剩下一个ReadMe文件,于是打开看了一下:

以下数据库已被删除:dbeco。 我们有完整的备份。 要恢复它,您必须向我们的比特币地址xxxx支付xx比特币(BTC)。 如果您需要证明,请通过以下电子邮件与我们联系。 [email protected] 。 任何与付款无关的邮件都将被忽略!

然后想着,完蛋了。因为我没有备份数据库。
后来我在网上找了一些数据库恢复方法(mysqlbinlog),与大家分享。

1、找到日志文件

找到MySQL的安装目录,如果不记得可以通过ps -ef | grep mysql 查看运行的路径,在这里我的路径是/www/server/mysql/,但是它的日志存储文件在/www/server/data/,日志文件名字如:mysql-bin.000004 ,找最新的那个。可以通过mysqlbinlog命令查看具体日志,
mysqlbinlog 命令应该在mysql的bin文件目录下,建议都使用绝对路径

/www/server/mysql/bin/mysqlbinlog /www/server/data/mysql-bin.000004

2、找到恢复(破坏)点

比如我的数据库被破坏是在 end_log_pos 15100838 这个位置

3、回滚(重新执行)

/www/server/mysql/bin/mysqlbinlog --stop-position=15100838 --database=dbeco /www/server/data/mysql-bin.000004 | /www/server/mysql -uroot -proot -v dbeco

!!可能在恢复的时候会出现数据库已经存在,不要去删数据库再操作,在末尾加 -f 选项忽略错误即可

4、查看数据库

#登录数据库
mysql -uroot -proot
#查看数据库表
mysql>show databases;
#查看表的内容
mysql> use dbeco;
mysql> show tables;
mysql> select * from dbeco;

然后可以看到数据库的内容恢复回来了。

5、其他

但是在Navicat依然没有办法正常连接,暂时不知道具体原因,只好把数据库表的内容进行备份(在这里不做详细描述),然后删掉mysql,重新安装,重新配置,备份还原。如果有其他好方法可以分享,谢谢。
不要设置简单密码!!!
记得定期备份数据库!!!

你可能感兴趣的:(关于我买了台阿里云服务器,mysql,服务器,数据库,linux,database)