12

蒙古新手在这里。我有一个带有四个数据库的 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 命令登录。

难道我做错了什么?您如何让一个可以全局读取和写入任何数据库的用户?您是否必须将所述用户添加到每个数据库的 system.users 集合中,或者如果他们具有“readWriteAnyDatabase”角色则不需要?

我在 ubuntu 上使用 mongo 2.4。

4

1 回答 1

21

所以,我终于想通了。请注意,此修复仅适用于 Mongo 2.4。

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

所以要创建初始用户

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

并验证使用

mongo -u foo --authenticationDatabase admin -p

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

于 2013-11-21T09:09:49.190 回答