该图片由Robinraj Premchand在Pixabay上发布mysql
个人小程序是在5月26号的时候上线的,运行了还没几天,5月30号的时候就有一个学弟告诉我说小程序用不了了,晚上回家打开电脑查看数据库的时候才发觉大事很差!sql
个人ytools数据库下的数据表去哪了,怎么就剩下一个WARING了????shell
吓得我赶忙百度了一下数据库
我擦,这是被攻击了吗?为何腾讯云都没有给我安全警报啊???小程序
不过有没有安全警报都是次要的,最主要的事情仍是要弄清楚缘由是啥,而后想办法补救和预防,仅以这篇文章记录下本身被攻击后的经历。vim
查了一些资料发现,其实被删库的事件家常便饭,2016年-2017年间,就曾出现过大量MySQL数据库被攻击,黑客留下QQ号,并索要高额恢复费的事情,哪怕是如今这种事情也常常发生。其实总的来讲仍是由于咱们在服务器安全防范方面,意识至关不够,侥幸心理严重(就像到如今我也不懂我这个小屁民啥事也没作为啥还要搞我同样)。如下两种状况的MySQL最容易被攻击。安全
不少人图省事,将服务器密码设置简单,方便记忆与登陆,这每每给黑客留下破解空间。一旦服务器密码被破解,那黑客将能够直接登陆到服务器,肆意修改数据、删除数据。针对这项,在设置密码时,建议:使用字母、数字、字符组合的密码,尽可能在8位10位以上。不按期更换密码。bash
不少新手在使用数据库时,没有进行权限设置(或者纯粹就是图省事,项目跑起来就好了),网站程序直接链接root权限,一旦网站程序被破解,root帐号密码也将被hei客获取。MySQL涉及权限的表一共5个,最重要的权限表:user、db。user表里除了root localhost有全部权限外,其余 xxxx %一律没有权限。须要开通权限要在db表里。服务器
总之千万不要用root以及管理员权限去运行!同时将权限限制到最小!网站
下面是我查阅资料找到的一些常规的安全防范措施:
针对上述方法措施,在这给出修改过程。
这次实验的环境为:腾讯云的Ubuntu Server 18.04,数据库为MySQL 5.7.25。
服务器密码的修改咱们直接去控制台更改下就能够了,很少说,这里说下MySQL数据库root密码的更改。
mysql -u root -p
复制代码
而后输入原先的root密码进入数据库操做(mysql shell)
use mysql;
复制代码
update user set authentication_string=password('新密码') where user='root' and host='localhost';
复制代码
Tips:这里说明下,在MySQL 5.7
password
字段已从mysql.user
表中删除,新的字段名是authenticalion_string
。
flush privileges;
复制代码
sudo service mysql restart
复制代码
咱们知道MySQL的默认端口是3306,为了安全起见,建议将MySQL的默认端口号修改为本身想要的(有女友的就改为女友生日,这样就忘不掉了)。
查了不少资料说MySQL的配置文件在/etc/mysql/my.cnf
路径下,可是当我查看内容的时候却给我下面这样的信息:
这个文件里面根本没有任何参数设置(这是因为不一样的mysql版本致使的,再次申明下个人系统版本为Ubuntu18.04,MySQL 5.7.25),只看到下面两行设置,表示导入这两个目录里面的配置文件。
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
复制代码
分别尝试打开查看内容后咱们发现其实MySQL的相关配置都位于/etc/mysql/mysql.conf.d/mysqld.cnf
里,进入目录后执行cat mysql.cnf
能够看到在**[mysqld]标签下有不少参数信息,其中有一个参数就是port**,咱们把它设置成本身想要的端口号就能够了(记得用vim时要加上sudo啊)。
最后重启下mysql就能够了。
sudo service mysql restart
复制代码
MySQL有一套权限系统,他的主要功能是证明链接到一台给定主机的用户,而且赋予该用户在数据库上的SELECT、INSERT、UPDATE和DELETE权限。基于安全考虑root帐户通常只能本地访问,可是在开发过程当中可能须要打开root的远程访问权限,若是正式上线的时候没有关闭mysql的远程访问权限,就有可能会被利用而后删库。
mysql -u root -p
复制代码
而后输入原先的root密码进入数据库操做(mysql shell)
use mysql;
复制代码
update user set host = "localhost" where user = "root" and host= "localhost";
复制代码
flush privileges;
复制代码
sudo service mysql restart
复制代码
上述内容是我本身针对这次服务器被攻击后查阅相关资料整理出来的,由于对这方面我也不是很懂,也只能作些简单的防御措施,仅供参考,若是你们有什么建议的能够在评论区或者公众号后台给我留言。