参考 > 参考 > mongo Shell方法 > 用户管理方法 > db.createUser()
db.
createUser
(user,writeConcern )¶为运行该方法的数据库创建一个新用户。
如果用户已经存在于数据库中,则db.createUser()
返回重复的用户错误。
该db.createUser()
方法具有以下语法:
领域 | 类型 | 描述 |
---|---|---|
user |
文献 | 该文档包含有关要创建的用户的身份验证和访问信息。 |
writeConcern |
文献 | 可选的。创建操作的写关注级别。该writeConcern 文档与getLastError 命令使用相同的字段。 |
该user
文档定义了用户,并具有以下形式:
小费
从mongo
Shell的4.2版本开始,您可以将该passwordPrompt()
方法与各种用户身份验证/管理方法/命令结合使用,以提示输入密码,而不是直接在方法/命令调用中指定密码。但是,您仍然可以像在早期版本的mongo
Shell中一样直接指定密码
。
该user
文档具有以下字段:
领域 | 类型 | 描述 |
---|---|---|
user |
串 | 新用户的名称。 |
pwd |
串 | 用户密码。 该值可以是:
小费 从 |
customData |
文献 | 可选的。任何任意信息。此字段可用于存储管理员希望与此特定用户关联的任何数据。例如,这可以是用户的全名或员工ID。 |
roles |
数组 | 授予用户的角色。可以指定一个空数组[] 来创建没有角色的用户。 |
身份验证限制 | 数组 | 可选的。服务器对创建的用户强制执行的身份验证限制。指定允许用户连接到服务器或服务器可以接受用户的IP地址和CIDR范围的列表 。 3.6版的新功能。 |
mechanisms |
数组 | 可选的。指定特定的SCRAM机制或用于创建SCRAM用户凭据的机制。如果 有效值为:
featureCompatibilityVersion的默认 featureCompatibilityVersion的默认 版本4.0中的新功能。 |
passwordDigestor |
串 | 可选的。指示服务器还是客户端提取密码。 可用值为:
在版本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。
该db.createUser()
方法包装createUser
命令。
从版本4.0.9开始,MongoDB userId
在创建后会自动为用户分配一个唯一
。
如果在副本集上运行,db.createUser()
则majority
默认情况下使用写关注来执行。
警告
默认情况下,db.createUser()
即使使用,也以明文形式将所有指定的数据发送到MongoDB实例passwordPrompt()
。使用TLS传输加密来保护客户端和服务器之间的通信,包括由发送的密码db.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
它们各自的行动资源。
以下db.createUser()
操作accountAdmin01
在products
数据库上创建
用户。
小费
从mongo
Shell的4.2版本开始,您可以将该passwordPrompt()
方法与各种用户身份验证/管理方法/命令结合使用,以提示输入密码,而不是直接在方法/命令调用中指定密码。但是,您仍然可以像在早期版本的mongo
Shell中一样直接指定密码
。
该操作具有accountAdmin01
以下作用:
clusterAdmin
和readAnyDatabase
角色admin
readWrite
上角色products
数据库以下操作将accountUser
在products
数据库中创建并为用户提供readWrite
和dbAdmin
角色。
小费
从mongo
Shell的4.2版本开始,您可以将该passwordPrompt()
方法与各种用户身份验证/管理方法/命令结合使用,以提示输入密码,而不是直接在方法/命令调用中指定密码。但是,您仍然可以像在早期版本的mongo
Shell中一样直接指定密码
。
以下操作将reportsUser
在admin
数据库中创建一个名为的用户,但尚未分配角色:
小费
从mongo
Shell的4.2版本开始,您可以将该passwordPrompt()
方法与各种用户身份验证/管理方法/命令结合使用,以提示输入密码,而不是直接在方法/命令调用中指定密码。但是,您仍然可以像在早期版本的mongo
Shell中一样直接指定密码
。
以下操作appAdmin
在admin
数据库中创建一个名为的用户,
并授予该用户readWrite
对config
数据库的访问权限
,这使用户可以更改分片群集的某些设置,例如平衡器设置。
小费
从mongo
Shell的4.2版本开始,您可以将该passwordPrompt()
方法与各种用户身份验证/管理方法/命令结合使用,以提示输入密码,而不是直接在方法/命令调用中指定密码。但是,您仍然可以像在早期版本的mongo
Shell中一样直接指定密码
。
以下操作将restricted
在
admin
数据库中创建一个名为的用户。仅当从IP地址连接到IP地址时192.0.2.0
,此用户才可以进行身份验证198.51.100.0
。
小费
从mongo
Shell的4.2版本开始,您可以将该passwordPrompt()
方法与各种用户身份验证/管理方法/命令结合使用,以提示输入密码,而不是直接在方法/命令调用中指定密码。但是,您仍然可以像在早期版本的mongo
Shell中一样直接指定密码
。
SCRAM-SHA-256
仅创建具有凭证的用户¶注意
要使用SCRAM-SHA-256,
featureCompatibilityVersion
必须将设置为4.0
。有关featureCompatibilityVersion的更多信息,请参见查看FeatureCompatibilityVersion和
setFeatureCompatibilityVersion
。
以下操作将创建仅具有SCRAM-SHA-256
凭据的用户。
小费
从mongo
Shell的4.2版本开始,您可以将该passwordPrompt()
方法与各种用户身份验证/管理方法/命令结合使用,以提示输入密码,而不是直接在方法/命令调用中指定密码。但是,您仍然可以像在早期版本的mongo
Shell中一样直接指定密码
。
如果authenticationMechanisms
设置了参数,则该
mechanisms
字段只能包含authenticationMechanisms
参数中指定的值
。