大型生产事故,开源项目蘑菇博客差点被删库

Posted 陌溪教你学编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大型生产事故,开源项目蘑菇博客差点被删库相关的知识,希望对你有一定的参考价值。

前言

今天有个热心的小伙伴,通过 mysql 图形化管理工具 SQLyog 进行远程数据库连接,成功进入了 蘑菇博客 的生产环境数据库。然后在博客数据表中增加一个超级管理员账号,最后通过新创建的超级管理员,在蘑菇博客后台转悠了一圈,然后进入蘑菇博客交流群和我反馈了这个 BUG ,在这里首先感谢这位小伙伴的不删库之恩 ....

问题缘由

问题出现的原因,是因为蘑菇博客生产环境的数据库使用的远程登录密码为 默认密码(mogu2018) 。也就是说,当我们在 Linux 服务器中,使用下面的命令进行数据库连接

# 连接mysql
mysql -u root -p
# 输入密码
mogu2020

发现使用密码:mogu2020 ,能够成功在服务器上登录MySQL

命令行方式进入MySQL

然后我们在通过 SQLyog 进行测试,我们输入密码 mogu2018

大型生产事故,开源项目蘑菇博客差点被删库
通过SQLyog远程连接MySQL

发现也能够成功登录系统!问题就出在这里呢,我以为我把密码改成了 mogu2020 ,但是其他小伙伴如果使用远程工具,还可以继续使用 mogu2018 进行登录!

解决方案

首先这个问题出现的原因,是因为远程连接的密码本地连接的密码不一致引起的,也就是说我在部署完 MySQL 后,只修改了一个所引起的,首先我们查询 mysql 用户

# 登录mysql
mysql -u root -p

# 使用mysql数据库
use mysql

# 查询mysql用户
select user, host from mysql.user;

我们能够发现有4个用户

查询mysql的连接用户

其中 host% 的表示是远程连接用户,而 localhost127.0.0.1 都是本地用户

下面给出的配置是蘑菇博客在线上SpringBoot项目连接 MySQL 数据库的配置

  datasource:
    username: root
    password: mogu2020
    url: jdbc:mysql://localhost:3306/mogu_admin

因为 MySQL 和项目是在同一个云服务器中,所以直接通过 localhost,即可连接。

而我们在 Windows 上通过 SQLyog 远程连接我们的云服务器,就只能通过 % 用户进行连接了,现在我们要做的是修改 % 用户(也远程连接用户) 的 密码即可。

# 修改密码,改成 mogu2020
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'mogu2020' WITH GRANT OPTION;

# 刷新
flush privileges;

修改完密码后,SQLyog 远程连接通过 mogu2018 无法登录了,正所谓亡羊补牢,为时不晚。因为之前修改密码的时候,只修改了 localhost 的,而没有修改%的,而导致这个问题的出现,最后再次感谢热心的小伙伴发现这个问题,以及小伙伴的不删库之恩~

结语

和陌溪一起学编程


以上是关于大型生产事故,开源项目蘑菇博客差点被删库的主要内容,如果未能解决你的问题,请参考以下文章

顺丰被删库?半个DBA的跑路经验总结

服务器又一次被恶意攻击,MongoDB被删库

暴力拒绝白嫖,著名开源项目作者删库跑路!神秘Bug影响超2万个项目,亚马逊云也躺枪...

血的教训 ,一次订单号重复的事故我差点被开除

拒绝白嫖,著名开源项目作者暴力删库,导致账号被封!

企业如何杜绝锁库删库数据泄露事件的再次发生?