1

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

当您连接时,各种用户界面(例如,robomongo)会显示数据库列表。如果无法“显示 dbs”,则不会列出任何数据库。

谢谢!

4

1 回答 1

3

这个问题显然是在考虑旧版本的情况下编写的,但至少从 3.2.9 开始,这是可能的。

commandshow dbs是对 command 的包装listDatabases,它是可授予的。所以首先创建一个只做后者的角色。

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

然后将其授予用户。

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


注意show dbs询问每个数据库的大小,它使用 locks因此,根据您的 MongoDB 实例如何容忍此类锁定,您可能希望明智地将此集群权限授予低权限用户。

于 2017-05-23T12:07:41.057 回答