MongoDB如何创建具有ReadWriteAnyDatabase角色但不包括管理数据库的用户

MongoDB如何创建具有ReadWriteAnyDatabase角色但不包括管理数据库的用户,mongodb,user-roles,mongodb-roles,Mongodb,User Roles,Mongodb Roles,我正在尝试创建一个扩展角色,允许 -在任何数据库上读/写 -允许在任何数据库上使用collMod -允许在任何数据库上使用createCollection -管理数据库上的只读 mongo admin -u user1 -p user1 db.createCollection('mycollection') { ok : 1 } db.mycollection.drop() { ok : 1 } 我尝试了以下方法 use admin db.runCommand({ createRole: "_

我正在尝试创建一个扩展角色,允许 -在任何数据库上读/写 -允许在任何数据库上使用collMod -允许在任何数据库上使用createCollection -管理数据库上的只读

mongo admin -u user1 -p user1
db.createCollection('mycollection')
{ ok : 1 }
db.mycollection.drop()
{ ok : 1 }
我尝试了以下方法

use admin
db.runCommand({ createRole: "_ReadWriteAnyDatabase",
  privileges: [
    { resource: { db: "", collection: "" }, actions: [ "collMod", "createCollection" ] }
  ],
  roles: [
    "readWriteAnyDatabase",
    { role: "read", db : "admin" }
  ]
})
然后我在管理数据库上创建了用户,因为我无法在其他数据库上创建用户

但我发现我可以在管理数据库上创建和删除集合

mongo admin -u user1 -p user1
db.createCollection('mycollection')
{ ok : 1 }
db.mycollection.drop()
{ ok : 1 }
如果您授予用户“readWriteAnyDatabase”角色,则不能排除admin DB。所以,解决方案是让所有其他数据库都使用“readWrite”角色,但用户不能创建新数据库

您可以创建列出所有数据库(不包括admin、local、config)的脚本(loop;forEach()),并向用户授予“readWrite”权限