createUser

在本页面

Definition

{ createUser: "<name>",
  pwd: "<cleartext password>",
  customData: { <any information> },
  roles: [
    { role: "<role>", db: "<database>" } | "<role>",
    ...
  ],
  writeConcern: { <write concern> },
  authenticationRestrictions: [
     { clientSource: [ "<IP|CIDR range>", ... ], serverAddress: [ "<IP|CIDR range>", ... ] },
     ...
  ],
  digestPassword: <boolean>
}

createUser具有以下字段:

Field Type Description
createUser string 新用户的名称。
pwd string 用户密码。如果您在$external数据库上运行createUser以创建将凭据存储在 MongoDB 外部的用户,则pwd字段不是必需的。
customData document 可选的。任何任意信息。该字段可用于存储 Management 员希望与此特定用户关联的任何数据。例如,这可以是用户的全名或员工 ID。
roles array 授予用户的角色。可以指定一个空数组[]来创建没有角色的用户。
digestPassword boolean 可选的。当true时,mongod实例将创建用户密码的哈希值;否则,Client 端负责创建密码的哈希。默认为true
writeConcern document 可选的。创建操作的write concern级别。 writeConcern文档具有与getLastError命令相同的字段。
authenticationRestrictions array 可选的。服务器对创建的用户强制执行的身份验证限制。指定允许用户连接到服务器或服务器可以接受用户的 IP 地址和 CIDR 范围的列表。


3.6 版中的新功能。

Roles

roles字段中,您可以同时指定built-in rolesuser-defined roles

要指定运行createUser的同一数据库中存在的角色,可以使用该角色的名称指定该角色:

"readWrite"

或者,您可以通过文档指定角色,如:

{ role: "<role>", db: "<database>" }

要指定存在于其他数据库中的角色,请与文档一起指定该角色。

Authentication Restrictions

3.6 版的新功能。

authenticationRestrictions文档可以仅包含以下字段。如果authenticationRestrictions文档包含无法识别的字段,服务器将引发错误:

Field Name Value Description
clientSource IP 地址和/或 CIDR 范围的数组 如果存在,则在验证用户身份时,服务器将验证 Client 端的 IP 地址在给定列表中或属于列表中的 CIDR 范围。如果 Client 端的 IP 地址不存在,则服务器不会对用户进行身份验证。
serverAddress IP 地址和/或 CIDR 范围的数组 Client 端可以连接的 IP 地址或 CIDR 范围的列表。如果存在,服务器将通过给定列表中的 IP 地址验证是否接受了 Client 端的连接。如果通过无法识别的 IP 地址接受了连接,则服务器不会对用户进行身份验证。

Important

如果用户继承具有不兼容身份验证限制的多个角色,则该用户将变得无法使用。

例如,如果用户继承一个角色,其中clientSource字段是["198.51.100.0"],而另一个角色则继承clientSource字段是["203.0.113.0"],则服务器将无法对该用户进行身份验证。

有关 MongoDB 中身份验证的更多信息,请参阅Authentication

Behavior

User Id

从版本 3.6.13 开始,MongoDB 3.6 在创建时自动为用户分配一个唯一的userId

Encryption

Warning

默认情况下,createUser以明文形式将所有指定的数据发送到 MongoDB 实例。使用 TLS 传输加密来保护 Client 端和服务器之间的通信,包括createUser发送的密码。有关启用 TLS 传输加密的说明,请参见为 TLS/SSL 配置 mongod 和 mongos

MongoDB 不会以明文形式存储密码。仅在未启用 TLS 传输加密的情况下,该密码仅在 Client 端和服务器之间的传输中容易受到攻击。

External Credentials

$external数据库上创建的用户应将凭据存储在 MongoDB 外部,例如使用 Kerberos 的 MongoDB Enterprise 安装

在版本 3.6.3 中更改:要与$external个身份验证用户(即 Kerberos,LDAP,x.509 用户)一起使用会话,用户名不能超过 10k 字节。

local Database

您不能在本地数据库上创建用户。

Required Access

userAdminuserAdminAnyDatabase内置角色在其各自的resources上提供createUsergrantRole动作。

Example

以下createUser命令在products数据库上创建一个用户accountAdmin01。该命令在admin数据库上为accountAdmin01提供clusterAdminreadAnyDatabase角色,在products数据库上为readWrite提供角色:

db.getSiblingDB("products").runCommand( { createUser: "accountAdmin01",
                                          pwd: "cleartext password",
                                          customData: { employeeId: 12345 },
                                          roles: [
                                                   { role: "clusterAdmin", db: "admin" },
                                                   { role: "readAnyDatabase", db: "admin" },
                                                   "readWrite"
                                                 ],
                                          writeConcern: { w: "majority" , wtimeout: 5000 }
                                       } )
首页