ANNOUNCEMENT: Voyage AI joins MongoDB to power more accurate and trustworthy AI applications on Atlas.
Learn more
Docs 菜单

db.grantPrivilegesToRole()

db.grantPrivilegesToRole(rolename, privileges, writeConcern)

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

重要

mongosh 方法

本页面提供 mongosh 方法的相关信息。这不是数据库命令或特定语言驱动程序(例如 Node.js)的相关文档。

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

如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。

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

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

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

Parameter
类型
说明

rolename

字符串

要授予权限的角色名称。

privileges

阵列

要添加到角色的权限。有关权限的格式,请参阅 privileges

writeConcern

文档

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

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

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

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

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

除了在 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操作