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 Atlas集群不支持此命令。 有关Atlas支持所有命令的信息,请参阅不支持的命令。
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
操作,系统集合除外。要访问系统集合,权限必须在资源文档中显式指定系统集合,如第二个权限所示。