有没有办法让MongoDB副本集上的用户能够使用'show dbs'和'show log'而不给他们clusterAdmin角色?
各种用户界面(例如robomongo)在您连接时显示数据库列表。如果没有“显示dbs”的能力,则不会列出任何数据库。
谢谢!
答案 0 :(得分:3)
这个问题显然是用旧版本编写的,但由于至少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实例如何容忍此类锁定,您可能希望明智地将此群集权限授予低权限用户