2014-02-23 118 views
3

我有我的蒙戈安裝如下創建一個管理員用戶:創建管理員用MongoDB的v2.4.8「dbAdminAnyDatabse」的角色

> use admin 
> db.addUser({ user: "test", 
       pwd: "password", 
       roles: [ "dbAdminAnyDatabse", 
         otherDBRoles: 
         { 
         "otherTestDB": [ "readWrite" ] 
         }] 
       }) 

當我嘗試連接到「otherTestDB」使用用戶:「測試」和pwd:「密碼」與robomongo或java驅動程序我得到一個錯誤的認證錯誤。

哪裏有錯?

回答

1

您已經爲admin數據庫創建了一個用戶標識,因此要使用該用戶標識,您必須連接到管理數據庫,而不是其他測試數據庫。其他DBRoles文檔以該用戶的身份連接到管理數據庫時控制對其他數據庫的訪問。

$ mongo otherTestDB --username test --password password --eval 'printjson(db.c.findOne())' 
connecting to: otherTestDB 
Thu Feb 27 10:45:20.722 Error: 18 { code: 18, ok: 0.0, errmsg: "auth fails" } at src/mongo/shell/db.js:228 

,而下面的命令,它連接到管理數據庫,然後使用otherTestDB通過:那麼與ADDUSER爲您指定它,因爲用戶是管理員分貝,而不是爲otherTestDB以下命令失敗getSiblingDB,成功:

$ mongo admin --username test --password password --eval 'printjson(db.getSiblingDB("otherTestDB").c.findOne())' 
connecting to: admin 
{ "_id" : ObjectId("530f5d904dbd43cfb46aab5b"), "hello" : "world" } 

如果你想連接到otherTestDB與用戶名和密碼時可以驗證的用戶,您將需要單獨這樣的用戶添加到otherTestDB。

這是否幫助?

+0

有沒有辦法創建一個在任何數據庫上都擁有root權限的用戶? – Modi

相關問題