db.grantPrivilegesToRole()
Definition
db.
grantPrivilegesToRole
(rolename, privileges, writeConcern)- Grants additional privileges to a user-defined role.
The grantPrivilegesToRole()
method uses the following syntax:
- db.grantPrivilegesToRole(
- "< rolename >",
- [
- { resource: { <resource> }, actions: [ "<action>", ... ] },
- ...
- ],
- { < writeConcern > }
- )
The grantPrivilegesToRole()
method takes the following arguments:
ParameterTypeDescriptionrolename
stringThe name of the role to grant privileges to.privileges
arrayThe privileges to add to the role. For the format of a privilege, seeprivileges
.writeConcern
documentOptional. The level of write concern for themodification. The writeConcern
document takes the samefields as the getLastError
command.
The grantPrivilegesToRole()
method can grant one or moreprivileges. Each <privilege>
has the following syntax:
- { resource: { <resource> }, actions: [ "<action>", ... ] }
The db.grantPrivilegesToRole()
method wraps thegrantPrivilegesToRole
command.
Behavior
Replica set
If run on a replica set, db.grantPrivilegesToRole()
is executed using majority
write concern by default.
Scope
Except for roles created in the admin
database, a role can onlyinclude privileges that apply to its database
A role created in the admin
database can include privileges thatapply to the admin
database, other databases or to thecluster resource.
Required Access
You must have the grantRole
action on the database a privilege targets in order togrant the privilege. To grant a privilege on multiple databases or on thecluster
resource, you must have the grantRole
action onthe admin
database.
Example
The following db.grantPrivilegesToRole()
operation grants twoadditional privileges to the role inventoryCntrl01
, which exists on theproducts
database. The operation is run on that database:
- use products
- db.grantPrivilegesToRole(
- "inventoryCntrl01",
- [
- {
- resource: { db: "products", collection: "" },
- actions: [ "insert" ]
- },
- {
- resource: { db: "products", collection: "system.js" },
- actions: [ "find" ]
- }
- ],
- { w: "majority" }
- )
The first privilege permits users with this role to perform theinsert
action on all collections ofthe products
database, except the system collections. To access a system collection, aprivilege must explicitly specify the system collection in the resourcedocument, as in the second privilege.
The second privilege permits users with this role to perform thefind
action on theproduct
database’s system collection named system.js
.