记录一次mysql数据库被黑删库遭比特币勒索的教训

起因是想用服务器上的一个数据库访问其他数据库的权限,就直接按照网上教程改了mysql库里的user表的权限,可能是哪里权限修改问题,也没太在意,到了第二天发现网站登录不了了。后台登录提示用户名不存在,于是到数据库中看了一下。结果发现服务器上所有数据
起因是想用服务器上的一个数据库访问其他数据库的权限,就直接按照网上教程改了mysql库里的user表的权限,可能是哪里权限修改问题,也没太在意,到了第二天发现网站登录不了了。后台登录提示用户名不存在,于是到数据库中看了一下。结果发现服务器上所有数据库都被清空了,黑客非常人性的在每个库中留下一个warnning表,大概意思如下:

你的以下数据库已经被删除,不过我们已经做了备份,你想要拿到这些备份,请在三天时间内向这个比特币钱包里支付xxx金额的比特币,不然我们就会永久删除这些文件,你耗子尾汁。如果有意向支付,可以联系这个比特币邮箱。

看到这里,我心里真有一万只羊驼在奔腾,给钱是不可能的,如果给你们钱不是纵容你们。幸好我的数据库定期有做备份,不然就坑死了。

我大概总结了一下,之所以被攻击,其致命原因有三点:

  • 用户名和密码太简单,我的用户名采用的默认root,密码为最简单的123456 !
  • mysql端口号采用的是默认端口3306 !
  • 权限设置所有IP均可访问 !
找到原因,解决办法如下:
修改用户名和密码
mysql -uroot -p #打开数据库
use mysql;
select host,user from user; # 查看现有用户
# 新建用户king,密码123456!用户名,和密码不要太简单,防止黑客攻击,这里只是为了演示
CREATE USER 'king'@'localhost' IDENTIFIED BY '123456';
select host,user from user; # 再次查看用户
修改访问权限
# king是远程访问用户名,123456是远程访问的密码!
# %代表所有主机都能访问,可以改成固定IP地址或者ip范围如192.168.0.0/255.255.0.0(C类网络的任何地址)
GRANT ALL PRIVILEGES ON *.* TO 'king'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
修改mysql端口
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
# 允许远程访问,注释掉这一行
# bind-address = 127.0.0.1 
# 修改访问端口,找到port,修改端口号
port = ****
重启服务
service mysql restart
最后提醒大家,数据库要定期做备份,备份时间越短越好。另外修改数据库权限时候一定要特别注意,我就是因为太随意修改才酿成大错,以后一定要注意。
本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

我们有时候需要对mysql的数据库进行重新设置,这个要怎么操作呢?其实方法很多,下面小编列举了6种方法,希望可以帮到您: 方法一: 使用phpmyadmin,这是最简单的了,修改mysql库的user表, 不过别忘了使用PASSWORD函数。 mysql 设置密码,如何更改默认的roo
用mysql查数据库字段时.如果字段是text这种大文本格式.里面包括 html标签,比如,center,width等.你在全文搜索center这个关键字时,可能就把标签中包含center的字段也搜索出来的. 解决办法之一是.为你的数据库的商品表新建立一个字段 比如商品表,content字段是产
在linux中使用的是mysql5.7,导入数据提示:Field * doesnt have a default value,想要解决问题就需要知道在mysql5.7中,启用了严格模式: 在配置文件中 /etc/mysql/my.cnf 中找到: sql-model=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
错误分析: 此错误为表损坏,修复即可。一般原因为服务器突然断电,而有程序还在往表里写数据。或者表的数据很大。避免浪费时间去修表。注意服务器操作时停掉数据库。另外一定先做个数据库的备份,以免发生未知错误! 如果有管理软件:Navicat 找到报错的数据
mysql 从一个表中查数据并插入另一个表实现方法 不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指定导入字段。 本文就将以MySQL数据库为例,介绍如何通过SQL命令行将
一、 创建用户: 命令:CREATE USER username@host IDENTIFIED BY password; 说明:username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password - 该