Docs 菜单

Docs 主页开发应用程序MongoDB Manual

db.grantPrivilegesToRole()

在此页面上

  • 定义
  • 兼容性
  • 行为
  • 必需的访问权限
  • 例子
db.grantPrivilegesToRole(rolename, privileges, writeConcern)

用户定义的角色授予的其他权限

重要

mongosh 方法

本页介绍了 mongosh方法。这不是数据库命令或特定语言驱动程序(例如 Node.js)的文档。

有关数据库命令,请参阅 grantPrivilegesToRole 命令。

对于 MongoDB API 驱动程序,请参阅特定语言的MongoDB 驱动程序文档。

对于传统 mongo Shell 文档,请参阅相应 MongoDB Server 版本的文档:

mongo shell v4.4

db.grantPrivilegesToRole()方法使用以下语法:

db.grantPrivilegesToRole(
"< rolename >",
[
{ resource: { <resource> }, actions: [ "<action>", ... ] },
...
],
{ < writeConcern > }
)

db.grantPrivilegesToRole()方法接受以下参数:

范围
类型
说明
rolename
字符串
要授予权限的角色名称。
privileges
阵列
要添加到角色的权限。有关权限的格式,请参阅 privileges
writeConcern
文档

可选。操作的写关注级别。请参阅写关注规范

db.grantPrivilegesToRole()方法可以授予一项或多项权限。每个<privilege>都具有以下语法:

{ resource: { <resource> }, actions: [ "<action>", ... ] }

此方法可用于以下环境中托管的部署:

  • MongoDB Atlas :用于在云中部署 MongoDB 的完全托管服务

注意

M 0 、M 2和 M 5集群不支持此命令。有关更多信息,请参阅不支持的命令。

如果在副本集上运行,则默认情况下使用 写关注执行db.grantPrivilegesToRole() "majority"

除了在 admin 数据库中创建的角色之外,角色只能包含适用于其数据库的权限

admin 数据库中创建的角色可包含适用于 admin 数据库、其他数据库或集群资源的权限。

您必须对权限的目标数据库执行 grantRole 操作才能授予该权限。要授予对多个数据库或 cluster 资源的权限,必须对 admin 数据库执行 grantRole 操作。

以下db.grantPrivilegesToRole()操作向products数据库中存在的角色inventoryCntrl01授予另外两个特权。该操作在该数据库上运行:

use products
db.grantPrivilegesToRole(
"inventoryCntrl01",
[
{
resource: { db: "products", collection: "" },
actions: [ "insert" ]
},
{
resource: { db: "products", collection: "system.js" },
actions: [ "find" ]
}
],
{ w: "majority" }
)

第一个权限允许具有此角色的用户对 products 数据库的所有集合执行 insert 操作系统集合除外。要访问系统集合,权限必须在资源文档中显式指定系统集合,如第二个权限所示。

第二个权限允许具有此角色的用户对名为 system.jsproduct 数据库系统集合执行find操作

← db.getRoles()