问题

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

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

查找原因

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

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

READ_ME_TO_RECOVER_YOUR_DATA

图片[1]-MONGODB 数据莫名其妙的没了-站保站

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

实际上就是被黑了 ·····

打开之后查看里面内容,果然就有勒索信息···

图片[2]-MONGODB 数据莫名其妙的没了-站保站

翻译一下就是

所有数据都是备份的。您必须支付0.015 BTC到16Vk6GrQYwzXvNxdBq7Zp6TGnwPEhpBWgB 48小时才能恢复。在48小时到期后,我们将泄露并公开您的所有数据。如果拒绝付款,我们将联系通用数据保护条例(GDPR),并通知他们您以开放形式存储用户数据,并且不安全。根据法律规定,您将面临严厉的罚款或逮捕,您的基地垃圾将从我们的服务器上丢弃!您可以在这里购买比特币,使用本指南购买https://localbitcoins.com不需要花费太多时间https://localbitcoins.com/guides/how-to-buy-bitcoins后,使用您的DB IP:getbase@cock.li在邮件中写信给我

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

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

解决

一、修改配置文件。

配置文件中修改bind_ip 为127.0.0.1,这样就只能允许本机访问。
端口号想改就改,改掉后避免对于默认端口27017的扫描。
nohttpinterface:是否禁止http接口,即28017 端口开启的服务。默认false,支持
auth:用户认证,默认false。不需要认证。当设置为true时候,进入数据库需要auth验证,当数据库里没有用户,则不需要验证也可以操作。直到创建了第一个用户,之后操作都需要验证。后面介绍如何使用

dbpath <span class="token operator">=</span> <span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>mongodb<span class="token operator">/</span>db
logpath <span class="token operator">=</span> <span class="token operator">/</span>logs<span class="token operator">/</span>mongodb<span class="token punctuation">.</span>log
port <span class="token operator">=</span> <span class="token number">27017</span>
fork <span class="token operator">=</span> <span class="token boolean">true</span>
nohttpinterface<span class="token operator">=</span><span class="token boolean">true</span>
bind_ip <span class="token operator">=</span> <span class="token number">127.0</span><span class="token number">.0</span><span class="token number">.1</span>
auth <span class="token operator">=</span> <span class="token boolean">true</span>
dbpath <span class="token operator">=</span> <span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>mongodb<span class="token operator">/</span>db
logpath <span class="token operator">=</span> <span class="token operator">/</span>logs<span class="token operator">/</span>mongodb<span class="token punctuation">.</span>log
port <span class="token operator">=</span> <span class="token number">27017</span>
fork <span class="token operator">=</span> <span class="token boolean">true</span>
nohttpinterface<span class="token operator">=</span><span class="token boolean">true</span>
bind_ip <span class="token operator">=</span> <span class="token number">127.0</span><span class="token number">.0</span><span class="token number">.1</span>
auth <span class="token operator">=</span> <span class="token boolean">true</span>

dbpath = /usr/local/mongodb/db
logpath = /logs/mongodb.log
port = 27017
fork = true
nohttpinterface=true
bind_ip = 127.0.0.1
auth = true

二、创建用户和权限

  1. mongodb的开启,连接数据库。注意,修改配置文件后,特别是修改端口后,直接运行 mongo命令是连接不上的,要添加上地址与端口号才可以。
mongo 127.0.0.1:27017
mongo 127.0.0.1:27017

mongo 127.0.0.1:27017

  1. 创建用户和权限
use admin
db<span class="token punctuation">.</span>createUser<span class="token punctuation">(</span>
<span class="token punctuation">{</span>
user:<span class="token string">"admin"</span><span class="token punctuation">,</span>
<span class="token function">pwd</span>:<span class="token string">"admin"</span><span class="token punctuation">,</span>
roles:<span class="token punctuation">[</span>
<span class="token punctuation">{</span>role:<span class="token string">"userAdminAnyDatabase"</span><span class="token punctuation">,</span>db:<span class="token string">"admin"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">{</span>role:<span class="token string">"readWrite"</span><span class="token punctuation">,</span>db:<span class="token string">"admin"</span><span class="token punctuation">}</span>
<span class="token punctuation">]</span>
<span class="token punctuation">}</span>
<span class="token punctuation">)</span><span class="token punctuation">;</span>
use admin
db<span class="token punctuation">.</span>createUser<span class="token punctuation">(</span>
    <span class="token punctuation">{</span>
        user:<span class="token string">"admin"</span><span class="token punctuation">,</span>
        <span class="token function">pwd</span>:<span class="token string">"admin"</span><span class="token punctuation">,</span>
        roles:<span class="token punctuation">[</span>
            <span class="token punctuation">{</span>role:<span class="token string">"userAdminAnyDatabase"</span><span class="token punctuation">,</span>db:<span class="token string">"admin"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
            <span class="token punctuation">{</span>role:<span class="token string">"readWrite"</span><span class="token punctuation">,</span>db:<span class="token string">"admin"</span><span class="token punctuation">}</span>
        <span class="token punctuation">]</span>
    <span class="token punctuation">}</span>
<span class="token punctuation">)</span><span class="token punctuation">;</span>

use admin
db.createUser(
{
user:"admin",
pwd:"admin",
roles:[
{role:"userAdminAnyDatabase",db:"admin"},
{role:"readWrite",db:"admin"}
]
}
);

3.设置开启权限

这一步就是上面配置文件中的 auth = true

4.重启服务 重启后配置生效,这时再使用 show dbs 就会发现提示无权限。

此时必须先连接 admin,才能连接其他db,否则会失败

use admin
db.auth("admin","admin")
use admin
db.auth("admin","admin")

use admin
db.auth("admin","admin")

  1. 给其他数据库创建用户和权限
    最后就是给其他数据库创建权限了,这个就是自己使用的数据库。如果不创建角色权限的话,其他数据库也是用不了
use test
db.createUser(
{
user:"root",
pwd:"root",
roles:[
{role:"readWrite",db:"test"},
{role:"dbOwner",db:"test"}
]
}
)
use test
db.createUser(
    {
        user:"root",
        pwd:"root",
        roles:[
            {role:"readWrite",db:"test"},
            {role:"dbOwner",db:"test"}
        ]
    }
)

use test
db.createUser(
{
user:"root",
pwd:"root",
roles:[
{role:"readWrite",db:"test"},
{role:"dbOwner",db:"test"}
]
}
)

代码中数据库连接时就需要添加用户名密码了

图片[3]-MONGODB 数据莫名其妙的没了-站保站

至此,解决完毕 。应该是没啥问题~~~ 了吧·····

下载说明:

1、本站资源都是白菜价出售,同样的东西,我们不卖几百,也不卖几十,甚至才卖几块钱,一个永久会员能下载全站100%源码了,所以单独购买也好,会员也好均不提供相关技术服务。

2、如果源码下载地址失效请/联系站长QQ进行补发。

3、本站所有资源仅用于学习及研究使用,请必须在24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担。资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您权益请联系本站删除!

4、本站站内提供的所有可下载资源(软件等等)本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发);但本网站不能保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug;同时本站用户必须明白,【源码源码ui网】对提供下载的软件等不拥有任何权利(本站原创和特约原创作者除外),其版权归该资源的合法拥有者所有。

5、请您认真阅读上述内容,购买即以为着您同意上述内容。

一站网 » MONGODB 数据莫名其妙的没了

发表回复