帮助中心

2016年-2017年间,就曾出现过大量MySQL数据库被攻击,黑客留下QQ号,并索要高额恢复费的事情,哪怕是现在这种事情也经常发生。其实总的来说还是因为我们在服务器安全防范方面,意识相当不够,侥幸心理严重(就像到现在我也不懂我这个小屁民啥事也没做为啥还要搞我一样)。以下两种情况的MySQL最容易被攻击。服务器密码过于简单的很多人图省事,将服务器密码设置简单,方便记忆与登录,这往往给黑客留下破解空

当前位置: 首页  >> 新闻中心  >> 帮助中心  >> 查看详情

MySQL数据库被删只剩下warning表应该怎么预防和解决

浏览量:1174 时间:2023-08-16 05:34:05

2016年-2017年间,就曾出现过大量MySQL数据库被攻击,黑客留下QQ号,并索要高额恢复费的事情,哪怕是现在这种事情也经常发生。其实总的来说还是因为我们在服务器安全防范方面,意识相当不够,侥幸心理严重(就像到现在我也不懂我这个小屁民啥事也没做为啥还要搞我一样)。以下两种情况的MySQL最容易被攻击。

服务器密码过于简单的

序列号 CPU RAM HDD 带宽 售价(美元) 免费试用
香港服务器1 E5-2620 32G 1T HDD 50M/无限流量 $196.00 立即申请
香港服务器2 E5-2650 32G 1T HDD 50M/无限流量 $256.00 立即申请
香港服务器3 E5-2680 32G 1T HDD 50M/无限流量 $316.00 立即申请
香港服务器4 E5-2690 32G 1T HDD 50M/无限流量 $336.00 立即申请
香港服务器5 E5-2697 32G 1T HDD 50M/无限流量 $376.00 立即申请
香港服务器6 E5-2620*2 32G 1T HDD 50M/无限流量 $376.00 立即申请
香港服务器7 E5-2650*2 32G 1T HDD 50M/无限流量 $436.00 立即申请
香港服务器8 E5-2680*2 32G 1T HDD 50M/无限流量 $476.00 立即申请
香港服务器9 E5-2690*2 32G 1T HDD 50M/无限流量 $556.00 立即申请
香港服务器10 E5-2697*2 32G 1T HDD 50M/无限流量 $596.00 立即申请
香港服务器11 E5-2680v4*2 32G 1T HDD 50M/无限流量 $696.00 立即申请
香港服务器12 E5-2698v4*2 32G 1T HDD 50M/无限流量 $796.00 立即申请

很多人图省事,将服务器密码设置简单,方便记忆与登录,这往往给黑客留下破解空间。一旦服务器密码被破解,那黑客将可以直接登录到服务器,肆意修改数据、删除数据。针对这项,在设置密码时,建议:使用字母、数字、字符组合的密码,尽量在8位10位以上。不定期更换密码。

网站程序直接使用root权限

很多新手在使用数据库时,没有进行权限设置(或者纯粹就是图省事,项目跑起来就行了),网站程序直接连接root权限,一旦网站程序被破解,root账号密码也将被黑客获取。MySQL涉及权限的表一共5个,最重要的权限表:user、db。user表里除了root localhost有所有权限外,其他 xxxx %一概没有权限。需要开通权限要在db表里。

总之千万不要用root以及管理员权限去运行!同时将权限限制到最小!

预防

下面是我查阅资料找到的一些常规的安全防范措施:

服务器的管理员密码具备一定复杂度,建议使用字母、数字、字符组合的密码。

服务器关闭远程访问(或关闭外网的远程访问),调整远程访问默认的端口号。

MySQL的root用户密码具备一定复杂度,建议使用字母、数字、字符组合的密码。

MySQL不允许任意远程端连接,建议仅对协同系统所在的IP地址放开连接。

MySQL不使用默认的3306端口,建议修改为其他端口。(mysql的配置文件:Linux下为my.cnf)

MySQL设置定时备份,并将数据备份包备份在异机(或异地)。

网站程序不直接使用root权限,单独设立用户权限。

措施

针对上述方法措施,在这给出修改过程。

环境声明

此次实验的环境为:腾讯云的Ubuntu Server 18.04,数据库为MySQL 5.7.25。

修改root账户密码

服务器密码的修改我们直接去控制台更改下就可以了,不多说,这里说下MySQL数据库root密码的更改。

以root账户登录MySQL

mysql -u root -p

然后输入原先的root密码进入数据库操作(mysql shell)

选择数据库

use mysql;

更新root的密码

update user set authentication_string=password('新密码')where user='root' and host='localhost';

Tips:这里说明下,在MySQL 5.7 password字段已从 mysql.user表中删除,新的字段名是 authenticalion_string。

刷新权限

flush privileges;

退出MySQL的shell环境并重启MySQL服务

sudo service mysql restart

修改MySQL的使用端口

我们知道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的远程访问权限

MySQL有一套权限系统,他的主要功能是证实连接到一台给定主机的用户,并且赋予该用户在数据库上的SELECT、INSERT、UPDATE和DELETE权限。基于安全考虑root账户一般只能本地访问,但是在开发过程中可能需要打开root的远程访问权限,如果正式上线的时候没有关闭mysql的远程访问权限,就有可能会被利用然后删库。

以root账户登录MySQL

mysql -u root -p

然后输入原先的root密码进入数据库操作(mysql shell)

选择数据库

use mysql;

关闭远程访问

update user set host = "localhost" where user = "root" and host="%";

刷新权限

flush privileges;

退出MySQL的shell环境并重启mysql服务

sudo service mysql restart

24小时服务器机房客服
帮助中心
  • 24H在线
  • Tg纸飞机