MongoDB - 显示dbs并显示没有clusterAdmin角色的日志

时间:2013-10-18 20:30:09

标签: mongodb privileges replicaset

有没有办法让MongoDB副本集上的用户能够使用'show dbs'和'show log'而不给他们clusterAdmin角色?

各种用户界面(例如robomongo)在您连接时显示数据库列表。如果没有“显示dbs”的能力,则不会列出任何数据库。

谢谢!

1 个答案:

答案 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实例如何容忍此类锁定,您可能希望明智地将此群集权限授予低权限用户