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。
答案 0 :(得分:16)
所以,我终于弄明白了。请注意,此修复程序仅适用于Mongo 2.4。
在2.4中,您可以指定一个数据库,以便在连接字符串或命令行中对自己进行身份验证
所以要创建初始用户
use admin
db.createUser({user: "foo" , pwd: "bar", roles: [ "userAdminAnyDatabase","readWriteAnyDatabase" ]})
并验证使用
mongo -u foo --authenticationDatabase admin -p
现在你应该可以为任何数据库做任何你想做的事了