grantPrivilegesToRole
定义
grantPrivilegesToRole
为运行命令的数据库上定义的 用户定义 角色分配额外的 特权 。
提示
在
mongosh
中,还可以通过db.grantPrivilegesToRole()
辅助方法运行此命令。辅助方法对
mongosh
用户来说很方便,但它们返回的信息级别可能与数据库命令不同。如果不追求方便或需要额外的返回字段,请使用数据库命令。grantPrivilegesToRole
命令使用以下语法:
db.runCommand( { grantPrivilegesToRole: "<role>", privileges: [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ... ], writeConcern: { <write concern> }, comment: <any> } )
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
重要
M 0 、M 2和 M 5集群不支持此命令。 有关更多信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
命令字段
该命令具有以下字段:
字段 | 类型 | 说明 |
---|---|---|
grantPrivilegesToRole | 字符串 | 要授予权限的用户定义角色的名称。 |
privileges | 阵列 | 要添加到角色的权限。有关权限的格式,请参阅 privileges 。 |
writeConcern | 文档 | |
comment | any | 可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:
注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。 |
行为
角色的权限适用于创建该角色的数据库。在admin
数据库上创建的角色可以包含适用于所有数据库或集群的权限。
必需的访问权限
您必须对权限的目标数据库执行 grantRole
操作才能授予该权限。要授予对多个数据库或 cluster
资源的权限,必须对 admin
数据库执行 grantRole
操作。
例子
以下grantPrivilegesToRole
命令向products
数据库中存在的service
角色授予另外两个特权:
use products db.runCommand( { grantPrivilegesToRole: "service", privileges: [ { resource: { db: "products", collection: "" }, actions: [ "find" ] }, { resource: { db: "products", collection: "system.js" }, actions: [ "find" ] } ], writeConcern: { w: "majority" , wtimeout: 5000 } } )
privileges
大量中的第一个权限允许用户搜索products
数据库中的所有非系统集合。 该权限不允许对系统集合进行查询,例如system.js
集合。 要授予访问权限这些系统集合的访问权限,请在privileges
大量中显式预配访问权限。 请参阅有关自管理部署的资源文档。