本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!
事情过程
网站访问不了的事也有发生过,我当时的也没多想,感觉应该是服务挂了,重启一下就可以了。
花Gie用二指禅熟练的敲着命令,服务成功启动,很完美,访问一下主页试试。
这……,略显尴尬,于是打开日志看了一下,在日志上提示是表不存在,当时还是觉得问题不大,猜想应该是数据库发神经,没有忽略数据库表大小写之类的问题,然后就用本地的navicat
打开数据库看了一下。
不看还好,一看眼睛都湿润了,这踏马太感人了,两个库删的干干净净,就剩下了一张表,表的内容大致意思就是 你的数据库已被我攻击了,如要赎回,速速交出比特币,否则立马散播出去 ,
数据库恢复之路
就算一万个那啥啥奔腾而过,花Gie也要坚强,不哭。不能慌,常在河边走哪有不湿鞋,这个时候更需要展现出惊人的应对能力。
-
备份库
我首先在看了下以前有没有备份过,很惨,这是我个人网站,平时也就自己开发维护,在测试环境只有表结构,没有数据备份,忍不住流下没有备份习惯的眼泪。
-
binlog
不慌,还有binlog
(此时的内心已经开始慌张,默默祈求当时一定开启过binlog
)。
首先打开数据库,输入show variables like 'log_bin';
查看
嗯,很好,结果查出来了,和我想的一样,我没有开启binlog
。。。
在MySQL8以前,这个功能是默认关闭的,需要手动开启。虽然我的数据库binlog
没有开启,这里还是要给其他小伙伴介绍一下binlog
怎么玩。
- 在
/etc/my.cn
添加如下配置文件(后面会专门写一篇binlog怎么玩的教程
)
[mysqld]
server_id=1918
log_bin = mysql-bin
binlog_format = ROW
- 重启mysql
CentOS 6:service mysqld restart
CentOS 7:systemctl restart mysqld
- 使用
show variables like '%log_bin%'
查看是否开启成功
-
服务器快照
前面两种方式都不适用,说实话,我有点慌了,真慌了。。。我个人博客辛辛苦苦积累的十万张图片素材,还有一千多篇文章就这么没了,真的挺可惜的。于是我冥思苦想,想起来我可以去找找腾讯云服务器的快照,这是我最后一根救命稻草,我小心翼翼的登录网站,点开快照按钮,我甚至不敢睁开眼。
哈哈哈哈哈哈哈…….哈哈哈哈哈哈哈………啊啊啊啊啊啊啊啊啊啊啊啊…………啊啊啊啊啊啊啊啊啊啊啊啊……………啊哈哈啊哈哈哈哈哈哈。
苍天不负有心人,终于经过这么久的努力,我放弃了,我踏马放弃了,服务器没有快照。我哭了,哭的好大声。
最后的倔强
从小就受优秀环境熏陶的花Gie是不会向恶势力低头的,绝不,绝不可能。大家看好,就是这个邮箱…
血的教训
综合我的这次事件,我这里也给小伙伴们一些警醒,也是一些注意项:
- 密码强化,千万不要root/root,admin/admin,这简直送人头,非常容易破解
- 不推荐使用默认的端口3306
- 极其不推荐放开远程访问权限,在
my.cnf
配置文件中添加 bind-address =127.0.0.1, 设置仅限本地访问,如果是硬性需求,只允许特定安全网段访问数据库。 - 开启
binlog
- 使用云主机的安全组功能,限制访问来源和端口。
总结
对于网络安全,这次也算是一个警醒,也算给小伙伴们做了一个示范,如果有大佬还有其他什么办法,可以留言告诉我,我还想挣扎一下,再次流下心痛求安慰的泪水。
点关注,防走丢
以上就是本期全部内容,如有纰漏之处,请留言指教,非常感谢。我是花Gie,有问题大家随时留言讨论 ,我们下期见?。
文章持续更新,可以微信搜一搜 Java开发零到壹 第一时间阅读,并且可以获取面试资料学习视频等,有兴趣的小伙伴欢迎关注,一起学习,一起哈??。
原创不易,你怎忍心白嫖,如果你觉得这篇文章对你有点用的话,感谢老铁为本文点个赞、评论或转发一下
,因为这将是我输出更多优质文章的动力,感谢!