【MongoDB被黑了,数据全消失。进行权限校验!】

前言

遇到的问题跟一篇博客(mongoDB 数据莫名其妙的没了)的描述一样:

问题
之前没有接触过mongoDB,然后接手一个项目使用的是MongoDB,我就跟着网上的教程搭建一个MongoDB的服务,并运行起来。

一开始没有啥问题,成功的把服务与MongoDB都启动以来,运行也没有问题。但是过了几天,我再次打开时发现,以前的数据神奇的消失了。我还在想,是有什么定时清除的么,还是什么原因导致崩了然后数据就被清理了。

查找原因
第一次遇到我没有在意,重启了一下MongoDB,然后就放那了,重新加了一些测试数据。过了段时间,又遇到了数据被清空,于是乎下决心排查一下到底是什么原因。

首先,我看到了整个里面就一个db,名字为

READ_ME_TO_RECOVER_YOUR_DATA

一看这个就不是我的库嘛,看着也不像系统库。之前没注意看这个名字,以为就是个系统生成的库,现在注意一下这个名字就感觉不大对劲。
阅读此内容帮助你恢复数据,感觉被黑了。

实际上就是被黑了 ·····
刚接触果然是没有经验啊,还好这里都是些测试数据,并不是正式运营的数据,那我可就死犊子了。跟着教程走果然留下了坑····

原因很简单,我修改的配置,bind_ip为 0.0.0.0,端口号用的默认的27017。这样很容易被扫描到,更何况我也没有设置用户名和密码,有些人设置的弱密码也很容易被破解,这就是光着身子在互联网上裸奔啊,人家写个脚本就能抓到,只能怪自己

我是通过Docker容器来使用MongoDB的,放在远程服务器中运行。测试开发时就不需要本机开启MongoDB了,(当然开发需要开启很多软件,例如redis、mysql、nacos注册中心,导致笔记本电脑风扇的声音很大,而且很烫,好吧扯远了)。
Docker-compose.yaml文件如下所示:
其中的command: mongod --auth是添加认证auth,配置管理员和密码。

  my_mongo:
    image: mongo:latest
    container_name: my_mongo
    restart: always
    volumes:
      - /root/jzt/docker/mongo:/data/db
      - /root/jzt/docker/mongo/configdb:/data/configdb
    ports:
      - 27017:27017
    command: mongod --auth
    environment:
      - MONGO_INITDB_ROOT_USERNAME=jzt       #初始化管理员用户名和密码
      - MONGO_INITDB_ROOT_PASSWORD=xxxx2022
    tty: true

创建普通用户:

> use admin
switched to db admin
> db.auth("jzt","xxxx2022")
1

db就是MongoDB里的数据库。
为数据库创建可访问/读写的用户,并给用户配置密码。以后要读写数据库必须先进行验证。

> db.createUser(
... {
... user:"jzt",
... pwd:"xxxx2022",
... roles:[
... {role:"readWrite",db:"yygh"},
... {role:"dbOwner",db:"yygh"}
... ]
... }
... )
Successfully added user: {
	"user" : "jzt",
	"roles" : [
		{
			"role" : "readWrite",
			"db" : "yygh"
		},
		{
			"role" : "dbOwner",
			"db" : "yygh"
		}
	]
}
> 

使用NoSQLBooster图形化界面, 想要建立自定义数据库的连接,必须先验证才能访问数据库:
在这里插入图片描述

参考

  1. 使用Docker-Compose部署MongoDB
  2. mongoDB 数据莫名其妙的没了
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涛歌依旧fly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值