Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

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>", ... ] }

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

  • MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本

  • MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本

如果在副本集上运行,则默认情况下使用 "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操作

后退

db.getRoles