createUser
¶在运行命令的数据库上创建一个新用户。如果用户存在,该
createUser
命令将返回重复的用户错误。该createUser
命令使用以下语法:
小费
从mongo
Shell的4.2版本开始,您可以将该passwordPrompt()
方法与各种用户身份验证/管理方法/命令结合使用,以提示输入密码,而不是直接在方法/命令调用中指定密码。但是,您仍然可以像在早期版本的mongo
Shell中一样直接指定密码
。
createUser
具有以下字段:
领域 | 类型 | 描述 |
---|---|---|
createUser |
串 | 新用户的名称。 |
pwd |
串 | 用户密码。 该值可以是:
小费 从 |
customData |
文献 | 可选的。任何任意信息。此字段可用于存储管理员希望与此特定用户关联的任何数据。例如,这可以是用户的全名或员工ID。 |
roles |
数组 | 授予用户的角色。可以指定一个空数组[] 来创建没有角色的用户。 |
digestPassword |
布尔值 | 可选的。指示服务器还是客户端提取密码。 如果为true,则服务器从客户端接收未消化的密码并提取该密码。 如果为false,则客户端将摘要密码,并将摘要密码传递给服务器。与不兼容 在版本4.0中更改:默认值为 |
writeConcern |
文献 | 可选的。创建操作的写关注级别。该writeConcern 文档与getLastError 命令使用相同的字段。 |
authenticationRestrictions |
数组 | 可选的。服务器对创建的用户强制执行的身份验证限制。指定允许用户连接到服务器或服务器可以接受用户的IP地址和CIDR范围的列表 。 3.6版的新功能。 |
mechanisms |
数组 | 可选的。指定特定的SCRAM机制或用于创建SCRAM用户凭据的机制。如果 有效值为:
featureCompatibilityVersion的默认 featureCompatibilityVersion的默认 版本4.0中的新功能。 |
digestPassword |
布尔值 | 可选的。指示服务器还是客户端提取密码。 如果为true,则服务器从客户端接收未消化的密码并提取该密码。 如果为false,则客户端将摘要密码,并将摘要密码传递给服务器。与不兼容 在版本4.0中更改:默认值为 |
3.6版的新功能。
该authenticationRestrictions
文件可以包含只以下字段。如果authenticationRestrictions
文档包含无法识别的字段,服务器将引发错误
:
栏位名称 | 值 | 描述 |
---|---|---|
clientSource |
IP地址和/或CIDR范围的数组 | 如果存在,则在验证用户身份时,服务器将验证客户端的IP地址是否在给定列表中或属于列表中的CIDR范围。如果客户端的IP地址不存在,则服务器不会对用户进行身份验证。 |
serverAddress |
IP地址和/或CIDR范围的数组 | 客户端可以连接的IP地址或CIDR范围的列表。如果存在,服务器将通过给定列表中的IP地址验证是否接受了客户端的连接。如果通过无法识别的IP地址接受了连接,则服务器不会对用户进行身份验证。 |
重要
如果用户继承具有不兼容身份验证限制的多个角色,则该用户将变得无法使用。
例如,如果用户将继承一个角色,其中
clientSource
场["198.51.100.0"]
和另一个角色中的clientSource
字段是["203.0.113.0"]
服务器无法对用户进行认证。
有关MongoDB中身份验证的更多信息,请参阅 Authentication。
从版本4.0.9开始,MongoDB userId
在创建后会自动为用户分配一个唯一
。
警告
默认情况下,createUser
即使使用,也以明文形式将所有指定的数据发送到MongoDB实例passwordPrompt()
。使用TLS传输加密来保护客户端和服务器之间的通信,包括由发送的密码createUser
。有关启用TLS传输加密的说明,请参阅
为TLS / SSL配置mongod和mongos。
MongoDB不会以明文形式存储密码。仅在未启用TLS传输加密的情况下,该密码仅在客户端和服务器之间的传输中容易受到攻击。
在$external
数据库上创建的用户应该具有存储在MongoDB外部的凭据,例如,使用Kerberos的MongoDB Enterprise安装。
在版本3.6.3中更改:要与$external
身份验证用户(即Kerberos,LDAP,x.509用户)一起使用会话,用户名不能大于10k字节。
local
数据库¶您不能在本地数据库上创建用户。
createUser
grantRole
在userAdmin
和
userAdminAnyDatabase
内置的角色,提供createUser
与
grantRole
它们各自的行动资源。
以下createUser
命令accountAdmin01
在products
数据库上
创建一个用户。该命令提供accountAdmin01
了数据库上的
clusterAdmin
和readAnyDatabase
角色以及admin
数据库上的readWrite
角色products
:
小费
从mongo
Shell的4.2版本开始,您可以将该passwordPrompt()
方法与各种用户身份验证/管理方法/命令结合使用,以提示输入密码,而不是直接在方法/命令调用中指定密码。但是,您仍然可以像在早期版本的mongo
Shell中一样直接指定密码
。