Mongo用户读取和写入任何数据库的权限

时间:2013-09-16 08:05:06

标签: mongodb authentication

Mongo newb在这里。我有一个包含四个数据库的mongo安装,并希望创建一个可以读写所有数据库的用户。我试过了:

use admin;
db.addUser({user: "foo" , pwd: "bar", roles: [  "readWriteAnyDatabase" ]})

但是当我尝试做的时候

mongo someotherdb -u foo -p

并使用正确的密码进行身份验证,这会给我一个身份验证错误。

我还尝试通过执行此操作手动将用户添加到其他数据库

use someotherdb
db.addUser({user: "foo", roles: ['readWrite'], userSource: "admin"});

仍然没有骰子尝试通过mongo shell登录或使用目标数据库中的auth命令。

我做错了吗?你如何建立一个可以全局读写任何数据库的用户?您是否必须将所述用户添加到每个db的system.users集合中,或者如果他们具有“readWriteAnyDatabase”角色,那么这是不必要的?

我在ubuntu上使用mongo 2.4。

1 个答案:

答案 0 :(得分:16)

所以,我终于弄明白了。请注意,此修复程序仅适用于Mongo 2.4。

在2.4中,您可以指定一个数据库,以便在连接字符串或命令行中对自己进行身份验证

所以要创建初始用户

use admin
db.createUser({user: "foo" , pwd: "bar", roles: [  "userAdminAnyDatabase","readWriteAnyDatabase" ]})

并验证使用

mongo -u foo --authenticationDatabase admin -p

现在你应该可以为任何数据库做任何你想做的事了