grantPrivilegesToRole
定义
grantPrivilegesToRole
提示
在
mongosh
中,此命令还可以通过db.grantPrivilegesToRole()
辅助方法运行.辅助方法对
mongosh
用户来说很方便,但它们可能不会返回与数据库命令相同级别的信息。在不需要便利性或需要额外返回字段的情况下,请使用数据库命令。grantPrivilegesToRole
命令使用以下语法
db.runCommand( { grantPrivilegesToRole: "<role>", privileges: [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ... ], writeConcern: { <write concern> }, comment: <any> } )
兼容性
此命令可在以下环境中托管的部署中使用
MongoDB Atlas:云中MongoDB部署的全托管服务
重要
此命令不支持在M0、M2和M5集群中。有关更多信息,请参阅不支持命令。
MongoDB Enterprise:基于订阅的、自管理的MongoDB版本
MongoDB Community:源代码可用、免费使用和自管理的MongoDB版本
命令字段
此命令具有以下字段
字段 | 类型 | 描述 |
---|---|---|
grantPrivilegesToRole | string | 要授予特权的用户定义角色的名称。 |
privileges | array | 要添加到角色的权限。有关权限格式的信息,请参阅 privileges 。 |
writeConcern | document | |
comment | any | 可选。用户提供的与此命令关联的注释。一旦设置,此注释将出现在以下位置的相关记录旁边
注释可以是任何有效的BSON类型(字符串、整数、对象、数组等)。 |
行为
角色的权限应用于创建角色的数据库。在 admin
数据库上创建的角色可以包括应用于所有数据库或集群的权限。
所需访问权限
你必须拥有在目标权限的数据库上执行 grantRole
操作 的权限才能授予权限。要授予权限于多个数据库或集群资源,你必须拥有在 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
数组中显式提供访问权限。请参阅自托管部署的资源文档。