Mysql数据库删库被黑的启示

一、事件说明

网站崩溃无法登陆,一看错误是数据库root被拒绝(报错1045),之后按照网上的教程忙活半天,始终无法重设密码,就此卡住无进度。通过无密码登录的时候无意中查看了下mysql表的用户,发现已经无root用户,此时开始转变思路,创建用户,给与超级权限,重设密码。最终成功登入mysql,此时发现整个数据库表都是空的,什么内容都没有,还有多了一个readme表,事情进展到这一步,猛然意识到我这小破站数据库被黑了。

注:服务器是阿里ESC的,mysql是我自己建在服务器上的。

二、查找原因

1、数据库自建立起,一直使用root账户,并且密码过于简单(123456);

2、由于读取数据需要,数据库对外权限为%;

3、数据备份意识差,被勒索交钱归还数据。

三、处理情况

1、启动mysql的服务端

#cmd下

#停止mysql服务
net stop mysql

#启动服务端,以便客户端无密码登录
mysqld --console --skip-grant-tables --shared-memory;

2、无密码进入mysql,创建新账户,给与root级权限

#新建cmd,此窗口为mysql客户端

#1.进入mysql,输入密码的时候不需要内容,直接enter
mysql -u root -p


#2.打开mysql表及查看用户和权限
use mysql

SELECT user,host FROM mysql.user;

grant select,insert on *.* to test@'%' identified by 'test';

#3.刷新权限,创建个新用户,赋予新用户roo级权限

flush privileges;

create user 'root1'@'localhost' identified by 'mysql';

grant all on *.* to root1@'%';

flush privileges;

3、对外端口单独创建账户和权限,并且指定ip

#外网可访问mysql

create user '对外的用户名'@'localhost' identified by '密码';

grant all on *.* to root1@'%';

use mysql;

update user set host = 'ip地址' where user ='对外的用户名';

FLUSH PRIVILEGES;


#禁用或删除root用户

delete from user where user='root';

drop user 'root'@'localhost';

四、阿里云给的意见

①设置好阿里云ECS安全组,只允许指定的IP地址进行3389(远程桌面)、22(SSH)登陆,避免服务器管理端口被黑客扫描或爆破。
②在ECS安全组中,只放行必要的业务端口(比如80、443),其他无关端口不要放行。 
③服务器密码设置复杂点,不要过于太简单。 
④应用软件要经常更新到新版本,不要用老版本的软件。 
⑤根据阿里云的云监控中心(登陆地址:https://yundun.console.aliyun.com/)提示,及时修补高危系统漏洞(注意:修补前,做好快照备份)。 
⑥更多安全防护建议,请您查看文档 https://help.aliyun.com/knowledge_list/60787.html

五、其他mysql的命令

#密码置空
update mysql.user set authentication_string='' where user="root1";


#重设密码
set password for 'usexyrh'@'%'='xyrh123';

#
ALTER user 'root1'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xyrh123';


#退出
quit

Guess you like

Origin blog.csdn.net/qq_15028721/article/details/118565754
Recommended