Docs 主页 → 开发应用程序 → MongoDB Manual
db.revokePrivilegesFromRole()
定义
db.revokePrivilegesFromRole(rolename, privileges, writeConcern)
在该方法运行的数据库上,删除用户定义角色的指定特权。
重要
mongosh 方法
本页介绍了
mongosh
方法。这不是数据库命令或特定语言驱动程序(例如 Node.js)的文档。有关数据库命令,请参阅
revokePrivilegesFromRole
命令。对于 MongoDB API 驱动程序,请参阅特定语言的MongoDB 驱动程序文档。
对于传统
mongo
Shell 文档,请参阅相应 MongoDB Server 版本的文档:db.revokePrivilegesFromRole()
方法采用以下语法:db.revokePrivilegesFromRole( "<rolename>", [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ... ], { <writeConcern> } ) db.revokePrivilegesFromRole()
方法接受以下参数:范围类型说明rolename
字符串要撤销权限的用户定义角色的名称。privileges
阵列要从角色中删除的权限数组。有关权限格式的更多信息,请参阅privileges
。writeConcern
文档
行为
副本集
如果在副本集上运行,则默认情况下使用 写关注执行db.revokePrivilegesFromRole()
"majority"
。
范围
要撤销权限,资源文档模式必须与该权限的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" } )