搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 陌溪教你学编程 > 大型生产事故,开源项目蘑菇博客差点被删库

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

陌溪教你学编程 2020-12-21

前言

今天有个热心的小伙伴,通过 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 的,而没有修改%的,而导致这个问题的出现,最后再次感谢热心的小伙伴发现这个问题,以及小伙伴的不删库之恩~

结语

和陌溪一起学编程


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《大型生产事故,开源项目蘑菇博客差点被删库》的版权归原作者「陌溪教你学编程」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注陌溪教你学编程微信公众号

陌溪教你学编程微信公众号:CoderMoxi

陌溪教你学编程

手机扫描上方二维码即可关注陌溪教你学编程微信公众号

陌溪教你学编程最新文章

精品公众号随机推荐