mongodb安全和验证之学习笔记

作者:简简单单 2015-03-19

每个MongoDB的数据库都可以有许多用户,如果开启了安全性检查,则只有数据库认证用户才能执行相关的操作。admin的用户可以对任何数据库进行读写操作,其他数据库的用户只能执行相关权限的操作。

开启安全检查前,先创建几个用户:

由于mongodb的新版本引入了role的概念,所以直接创建db.addUser(‘xxx’, ‘xxx’)会出现。Warning但依然创建了用户。


WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead 
Successfully added user: { "user" : "test1", "roles" : [ "read" ] }

那么我们只讲大致讲一下现在如何新建用户。

查看roles


show roles

系统中有很多角色,我们关注几个。

 

mongodb安全和验证之学习笔记

 

mongodb安全和验证之学习笔记

 

现在我也没有完全搞懂他这里面的所有角色定位。以后细看一下。

我们先看一下,现在系统中是没有任何用户的

mongodb安全和验证之学习笔记

我们新建立两个用户看看

use admin
# 创建root用户(超级用户,可用这个先在admin中验证后再在其他库中操作)
db.createUser({user: 'root', pwd: 'xxxxxxxxx', roles: [ { role: 'root', db: 'admin'} ]})
use test
# 创建test用户
db.createUser({user: 'test', pwd: 'xxxxxxxxx', roles: [ { role: 'dbOwner', db: 'test'} ]})
 
use admin
db.system.users.find()

mongodb安全和验证之学习笔记


重启mongodb并且加上–auth选项(注意以后开机自启动也加上–auth选项)


pkill mongod
/usr/local/mongodb/bin/mongod --auth --dbpath=/data2/mongodbData/ --logpath=/data2/mongodbLogs --fork
 
# 修改/etc/rc.local中的mongod的启动项并且也加上--auth


然后再链接mongo客户端

mongodb安全和验证之学习笔记

可以看到不auth的时候show tables是看不到的。但use admin之后,还是看不到admin的表

如果用admin的用户登录呢,图如下:

mongodb安全和验证之学习笔记

可以看到admin库中的用户是全局用户。

再附带两个删除用户的。注:它们只是对当前库用户有效

删除admin库下root用户


use admin
db.dropUser("root", {w: "majority", wtimeout: 5000})

删除admin库下所有用户


use admin
db.dropAllUsers( {w: "majority", wtimeout: 5000} )

总结一点:mongodb目前授权我感觉还是比较混乱。可能我还不是太明白原理。以后重新写下。再说明一点,以前的addUser和deleteUser在2.6中虽然可用,但不推荐了,所以本文中说明均是以createUser和dropUser来做的讲解。

相关文章

精彩推荐