On this page本页内容
db.
createRole
(role, writeConcern)¶Creates a role in a database. 在数据库中创建角色。You can specify privileges for the role by explicitly listing the privileges or by having the role inherit privileges from other roles or both. 您可以通过显式列出权限或让角色从其他角色继承权限或同时从其他角色继承权限来指定角色的权限。The role applies to the database on which you run the method.该角色应用于运行该方法的数据库。
The db.createRole()
method accepts the following arguments:db.createRole()
方法接受以下参数:
role |
document | |
writeConcern |
document | writeConcern document uses the same fields as the getLastError command.writeConcern 文档使用与getLastError 命令相同的字段。 |
The role
document has the following form:role
文档的格式如下:
The role
document has the following fields:role
文档包含以下字段:
role |
string | |
privileges |
array |
|
roles |
array |
|
authenticationRestrictions |
array |
|
The db.createRole()
method wraps the createRole
command.db.createRole()
方法包装createRole
命令。
In the 在roles
field, you can specify both built-in roles and user-defined roles.roles
字段中,可以指定内置角色和用户定义角色。
To specify a role that exists in the same database where 要指定运行db.createRole()
runs, you can either specify the role with the name of the role:db.createRole()
的同一数据库中存在的角色,可以使用角色名称指定该角色:
Or you can specify the role with a document, as in:也可以通过文档指定角色,如中所示:
To specify a role that exists in a different database, specify the role with a document.要指定存在于其他数据库中的角色,请使用文档指定该角色。
New in version 3.6.版本3.6中的新功能。
The authenticationRestrictions
document can contain only the following fields. authenticationRestrictions
文档只能包含以下字段。The server throws an error if the 如果authenticationRestrictions
document contains an unrecognized field:authenticationRestrictions
文档包含无法识别的字段,服务器将抛出错误:
Field Name | Value | |
---|---|---|
clientSource |
||
serverAddress |
Important
If a user inherits multiple roles with incompatible authentication restrictions, that user becomes unusable.如果用户继承了多个身份验证限制不兼容的角色,则该用户将无法使用。
For example, if a user inherits one role in which the 例如,如果用户继承了clientSource
field is ["198.51.100.0"]
and another role in which the clientSource
field is ["203.0.113.0"]
the server is unable to authenticate the user.clientSource
字段为["198.51.100.0"]
的一个角色和clientSource
字段为["203.0.113.0"]
的另一个角色,则服务器无法对该用户进行身份验证。
For more information on authentication in MongoDB, see Authentication.有关MongoDB中身份验证的更多信息,请参阅身份验证。
If run on a replica set, 如果在副本集上运行,db.createRole()
is executed using majority
write concern by default.db.createRole()
将默认使用majority
写入关注点执行。
Except for roles created in the 除了在admin
database, a role can only include privileges that apply to its database and can only inherit from other roles in its database.admin
数据库中创建的角色外,角色只能包含应用于其数据库的权限,并且只能从其数据库中的其他角色继承。
A role created in the 在admin
database can include privileges that apply to the admin
database, other databases or to the cluster resource, and can inherit from roles in other databases as well as the admin
database.admin
数据库中创建的角色可以包括应用于admin
数据库、其他数据库或群集资源的权限,并且可以从其他数据库以及admin
数据库中的角色继承。
The 如果数据库中已经存在角色,则db.createRole()
method returns a duplicate role error if the role already exists in the database.db.createRole()
方法将返回重复的角色错误。
To create a role in a database, you must have:要在数据库中创建角色,您必须具有:
createRole
action on that database resource.createRole
操作。grantRole
action on that database to specify privileges for the new role as well as to specify roles to inherit from.grantRole
操作,以指定新角色的权限以及要从中继承的角色。Built-in roles 内置角色userAdmin
and userAdminAnyDatabase
provide createRole
and grantRole
actions on their respective resources.userAdmin
和userAdminAnyDatabase
在各自的资源上提供createRole
和grantRole
。
To create a role with 要创建指定了authenticationRestrictions
specified, you must have the setAuthenticationRestriction
action on the database resource which the role is created.authenticationRestrictions
的角色,必须对创建该角色的数据库资源执行setAuthenticationRestriction
操作。
The following 以下db.createRole()
method creates the myClusterwideAdmin
role on the admin
database:db.createRole()
方法在admin
数据库上创建myClusterwideAdmin
角色: