2013-12-12 51 views
4

連接到其它數據庫我已經在我的管理數據庫中定義的superuser不能與MongoDB的超級用戶從終端

$ mongo admin -u superuser -p 1234 
MongoDB shell version: 2.4.6 
connecting to: admin 
> db.system.users.findOne() 
{ 
    "_id" : ObjectId("52a9a8bd2db854b07d3960f1"), 
    "user" : "superuser", 
    "pwd" : "8c246ca972a74c8049b79771df9b718b", 
    "roles" : [ 
     "userAdminAnyDatabase", 
     "dbAdminAnyDatabase", 
     "clusterAdmin", 
     "readWriteAnyDatabase" 
    ] 
} 

但現在我不能與該用戶連接到另一個數據庫:

$ mongo mono -u superuser -p 1234 
MongoDB shell version: 2.4.6 
connecting to: mono 
Thu Dec 12 13:22:42.100 Error: 18 { code: 18, ok: 0.0, errmsg: "auth fails" } at src/mongo/shell/db.js:228 
exception: login failed 

這是一個知道功能/限制或我做錯了什麼?

回答

4

蒙戈認證是一個皇家的痛苦對接。即使您的超級用戶基本上是[「userAdminAnyDatabase」,「dbAdminAnyDatabase」,「clusterAdmin」,「readWriteAnyDatabase」]的性質,如果您按照http://docs.mongodb.org/manual/tutorial/enable-authentication/進行設置,他的system.user帳戶仍然位於「admin」數據庫中。這意味着你必須首先登錄到「管理員」,然後纔可以「繞過」使用數據庫。

$ mongo mono -u superuser -p 1234 admin 
MongoDB shell version: 2.4.6 
connecting to: admin 
myReplSet:PRIMARY> use mono 

另外,我懷疑,但沒有測試,你可以把你的超級用戶進入「測試」數據庫,而不是「管理」,這是外殼的土地你默認。這會讓你離開mongo命令行的「管理員」,但現在你已經讓用戶保持在不同的地方。巖。硬地方。

+1

解決方案的+1,你可以找到[mongo-native](http://stackoverflow.com/q/20563429/1420197)的解決方案嗎?同樣的問題在NodeJS方面。 –

相關問題