db.revokePrivilegesFromRole()
定义
db.revokePrivilegesFromRole(rolename, privileges, writeConcern)
删除该方法运行所在数据库的用户定义角色中的指定特权。
重要
mongosh 方法
本页面提供
mongosh
方法的相关信息。这不是数据库命令或特定语言驱动程序(例如 Node.js)的相关文档。有关数据库命令,请参阅
revokePrivilegesFromRole
命令。如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。
db.revokePrivilegesFromRole()
方法使用的语法如下:db.revokePrivilegesFromRole( "<rolename>", [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ... ], { <writeConcern> } ) db.revokePrivilegesFromRole()
方法接受以下参数:Parameter类型说明rolename
字符串要撤销权限的用户定义角色的名称。privileges
阵列要从角色中删除的权限数组。 有关权限格式的更多信息,请参阅privileges
。writeConcern
文档
兼容性
此方法可用于以下环境中托管的部署:
重要
MongoDB Atlas集群不支持此命令。 有关Atlas支持所有命令的信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
行为
副本集
如果在副本集上运行,则默认情况下使用 "majority"
写关注执行 db.revokePrivilegesFromRole()
。
范围
要撤销权限,资源文档模式必须与该权限的resource
字段完全匹配。 actions
字段可以是子集,也可以完全匹配。
例如,假设products
数据库中的accountRole
角色具有将products
数据库指定为资源的以下特权:
{ "resource" : { "db" : "products", "collection" : "" }, "actions" : [ "find", "update" ] }
您无法仅从products
数据库中的一个集合中撤销find
和/或update
。 以下操作不会导致角色发生变化:
use products db.revokePrivilegesFromRole( "accountRole", [ { resource : { db : "products", collection : "gadgets" }, actions : [ "find", "update" ] } ] ) db.revokePrivilegesFromRole( "accountRole", [ { resource : { db : "products", collection : "gadgets" }, actions : [ "find" ] } ] )
要撤销角色accountRole
中的"find"
和/或"update"
操作,必须与资源文档完全匹配。 例如,以下操作仅撤销现有特权中的"find"
操作。
use products db.revokePrivilegesFromRole( "accountRole", [ { resource : { db : "products", collection : "" }, actions : [ "find" ] } ] )
必需的访问权限
您必须对特权的目标数据库执行revokeRole
操作才能撤销该特权。 如果特权针对多个数据库或cluster
资源,则必须对admin
数据库拥有revokeRole
操作。
例子
以下操作会删除associates
角色的多个特权:
db.revokePrivilegesFromRole( "associate", [ { resource: { db: "products", collection: "" }, actions: [ "createCollection", "createIndex", "find" ] }, { resource: { db: "products", collection: "orders" }, actions: [ "insert" ] } ], { w: "majority" } )