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