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

Joe*_*eyP 7 authentication mongodb

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

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

但是当我尝试做的时候

mongo someotherdb -u foo -p
Run Code Online (Sandbox Code Playgroud)

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

我还尝试通过这样做手动将用户添加到其他数据库

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

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

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

我在ubuntu上使用mongo 2.4.

Joe*_*eyP 16

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

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

所以要创建初始用户

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

并验证使用

mongo -u foo --authenticationDatabase admin -p
Run Code Online (Sandbox Code Playgroud)

现在,您应该可以对任何数据库执行任何操作