2013-10-18 85 views
1

有沒有一種方法可以讓用戶在MongoDB副本集上使用'show dbs'和'show log'而不給他們clusterAdmin角色?MongoDB - 顯示dbs和顯示日誌沒有clusterAdmin角色

當您連接時,各種用戶界面(例如robomongo)會顯示數據庫列表。沒有「顯示數據庫」的能力,沒有列出數據庫。

謝謝!

+0

你可以給他們不同的權限,如此評論中所述https://jira.mongodb.org/browse/SERVER-11234?focusedCommentId=442260&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel# comment-442260 –

+0

除非我誤解了您引用的帖子,否則他們會將clusterAdmin角色添加到「admin」數據庫中的用戶(通過userSource條目或通過完整用戶)。我想避免授予完整的clusterAdmin角色,只是給予'show dbs'和'show log'的能力。 – caseym

+0

實際上,建議使用http://docs.mongodb.org/manual/reference/privilege-documents/#admin.system.users.otherDBRoles而不是clusterAdmin –

回答

2

這個問題顯然是用舊版本編寫的,但至少3.2.9這是可能的。

命令show dbs是命令listDatabases的包裝,它是可授權的。所以首先創建一個只有後者的角色。

db.runCommand({createRole:"justListDatabases",privileges:[{resource:{cluster:true}, 
       actions:["listDatabases"]}],roles:[]}) 

然後將其授予給用戶。

db.grantRolesToUser("app_RO_user",["justListDatabases"]) 


注意的是show dbs詢問它的大小,which uses locks每個數據庫。因此,根據您的MongoDB實例如何容忍此類鎖,您可能需要明智地將此羣集權限授予低權限用戶。