2014-04-07 54 views
0

我的數據庫中有自己的用戶設置的,現在我想EVAL某些功能,如:與dbAdmin角色數據庫用戶無法EVAL

function() { 
    db.mydatabase.ensureIndex(<fields>, <options>); 
} 

但是,從來沒有工作,我得到一個未經授權錯誤。

但用戶被授權和認證。如果現在,我將無法連接。 用戶還擁有dbAdmin角色集,我認爲這是2.4版及更高版本所需的。

我試圖使用管理員用戶登錄,但除非您登錄到管理數據庫本身,否則不起作用。

這是「MyDatabase的」用戶:

 
{ 
    "_id" : ObjectId("534290d2bfeb13f0b91d52d3"), 
    "user" : "myuser", 
    "pwd" : "blabla", 
    "roles" : [ 
     "read", 
     "readWrite", 
     "dbAdmin", 
     "userAdmin", 
     "clusterAdmin", 
     "readAnyDatabase", 
     "readWriteAnyDatabase", 
     "userAdminAnyDatabase", 
     "dbAdminAnyDatabase" 
    ] 
} 

回答

1

,在那裏你可以在編程中使用eval的概念是非常既包括here和重要here

短點是:

  • 你需要以特殊的權限,以便能夠使用的命令,以及考慮到,你不能做到這一點的分片集羣。

  • 從第二個鏈接可以顯式禁用實例啓動。因此,託管供應商在設置中默認執行此操作可能是一種很好的做法。

雖然eval確實有一些有效的用法在「走出監獄的」意識改變採集格式時解決特定的「一次性」的問題,在生產環境中一般使用應勸阻。

由於第二聯繫表明,在生產環境中運行時尋找其他的替代品使用EVAL形式。如果你堅持實際做到這一點,那麼即將出現嚴重問題。

+0

+1很好解釋 –