【DB】mongodb禁止外网访问以及添加账号

【笔记】

(1)用配置文件写入windows服务时候:

mongod --bind_ip 127.0.0.1 --dbpath /data/db --auth

(2)为数据库设置账号密码登录权限通过:

通过mongo进入管理界面,然后设置用户名密码。

> use admin

switched to db admin

> db.createUser({user:"root",pwd:"123456",roles:["userAdminAnyDatabase"]})

Successfully added user: { "user" : "root", "roles" : [ "userAdminAnyDatabase" ] }

注意:以上操作的前提是,将mongodb/bin目录写入了环境变量。

(3)变更数据库用户密码:

方法1:db.changeUserPassword("usertest","changepass");

方法2:db.updateUser("usertest",{pwd:"changepass1"});

或者删除重建:

use admin

db.system.users.find()

db.system.users.remove({user:'user'})

---------------------------------------------------------------------

未曾料到被黑客勒索比特币的戏码竟然降临到我的身上,几个月的技术积累付之一炬。怪只怪自己学艺不精,心存侥幸和无知,不过经此一役,方知网络安全防护的重要性。

一直未给自己的mongodb数据库设置账号密码,也没禁止外网访问,等同于在这个开放的网络世界里裸奔了几个月[允悲],不被人惦记才怪呢。

昔人有云:跌倒并不可怕,可怕的是在同一个地方跌倒两次。

亡羊补牢,犹未迟也。

那么我将从两个方面提高mongo数据库的安全防护系数

1.设置mongodb外网禁止访问

          启动数据库时,额外添加--bind_ip 127.0.0.1即可

 ./mongod --bind_ip 127.0.0.1 --dbpath /data/db --auth

       也可以通过修改/etc/mongod.conf文件添加一行代码

#只监听本地接口,多个接口用,隔开
bind_ip = 127.0.0.1

2.为数据库设置账号密码登录权限

         为了保证数据库需要账号密码才能连接,那么在启动数据库的时候需要添加auth参数

./mongod --dbpath /data/db --auth

         也可以通过修改/etc/mongod.conf文件添加一行代码

  auth = true

        这样在进行数据库连接的时候需要相应的账号密码才能成功访问。

        如果之前数据库未设置账号密码的话,那么需要先添加一个管理员账户,

> use admin

switched to db admin

> db.createUser({user:"root",pwd:"123456",roles:["userAdminAnyDatabase"]})

Successfully added user: { "user" : "root", "roles" : [ "userAdminAnyDatabase" ] }

 

        此时我们就成功的创建了一个管理员账户 账户名 root  密码 123456 ,此时执行show dbs会出现如下报错

> show dbs
2017-12-03T22:14:58.418+0800 E QUERY    [thread1] Error: listDatabases failed:{
    "ok" : 0,
    "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
    "code" : 13,
    "codeName" : "Unauthorized"
} .....

 

上边提示意为当前admin数据库未经授权无法执行指令,因此需要以管理员身份登录验证,如下操作
> db.auth('dpd','123456')
1

上边执行登录操作,输出结果 1,说明登录成功。此时再执行 show dbs 则会成功输出结果。此刻我们是以管理员的身份登录数据库,如果切换到test数据库,执行db.blog.insert({name:1})会报错如下,同样意为该数据库未经授权无法操作:

> use test
switched to db test
> db.blog.insert({name:1})
WriteResult({
    "writeError" : {
        "code" : 13,
        "errmsg" : "not authorized on test to execute command { insert: \"blog\", documents: [ { _id: ObjectId('5a240d8e2d43081ea4271cc8'), name: 1.0 } ], ordered: true }"
    }
})

所以要为test数据库添加一个用户,并以该用户身份登录才可以执行对该数据的操作。

> db.createUser({user:'use1',pwd:'123456',roles:["readWrite"]})
Successfully added user: { "user" : "use1", "roles" : [ "readWrite" ] }
> db.auth('use1','123456')
1
> db.blog.insert({name:1})
WriteResult({ "nInserted" : 1 })
>

至此,完成了通过账号和密码登录权限对数据库的访问和操作。

那么最终标准的连接test数据库的URI语法如下:

mongodb://use1:123456@localhost:27017/test

通过设置上述两道关卡,妈妈再也不用担心我的学习啦

转自:https://www.cnblogs.com/dupd/p/7975474.html

发布了392 篇原创文章 · 获赞 492 · 访问量 241万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览