updateUser
¶在运行命令的数据库上更新用户的配置文件。对字段的更新将完全替换先前字段的值,包括对用户roles
和
authenticationRestrictions
数组的更新。
警告
更新roles
数组时,将完全替换以前的数组的值。要添加或删除角色而不替换所有用户现有角色,请使用grantRolesToUser
或
revokeRolesFromUser
命令。
该updateUser
命令使用以下语法。要更新用户,您必须指定该updateUser
字段以及至少一个其他字段,除了writeConcern
:
小费
从mongo
Shell的4.2版本开始,您可以将该passwordPrompt()
方法与各种用户身份验证/管理方法/命令结合使用,以提示输入密码,而不是直接在方法/命令调用中指定密码。但是,您仍然可以像在早期版本的mongo
Shell中一样直接指定密码
。
该命令具有以下字段:
领域 | 类型 | 描述 |
---|---|---|
updateUser |
串 | 要更新的用户名。 |
pwd |
串 | 可选的。用户密码。该值可以是:
小费 从 |
customData |
文献 | 可选的。任何任意信息。 |
roles |
数组 | 可选的。授予用户的角色。对该roles 数组的更新将覆盖以前的数组的值。 |
writeConcern |
文献 | 可选的。更新操作的写入关注级别。该writeConcern 文档与getLastError 命令使用相同的字段。 |
authenticationRestrictions |
数组 | 可选的。服务器对用户实施的身份验证限制。指定允许用户连接到服务器或服务器可以接受用户的IP地址和CIDR范围的列表 。 3.6版的新功能。 |
mechanisms |
数组 | 可选的。用户凭证的一种或多种特定SCRAM机制。如果 如果在不使用密码的情况下更新“机制”字段,则只能指定用户当前机制的子集,并且仅保留指定机制的现有用户凭据。 如果与机制一起更新密码,则会为用户存储一组新的凭据。 有效值为:
版本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。
警告
默认情况下,updateUser
即使使用,也以明文形式将所有指定的数据发送到MongoDB实例passwordPrompt()
。使用TLS传输加密来保护客户端和服务器之间的通信,包括由发送的密码updateUser
。有关启用TLS传输加密的说明,请参阅
为TLS / SSL配置mongod和mongos。
MongoDB不会以明文形式存储密码。仅在未启用TLS传输加密的情况下,该密码仅在客户端和服务器之间的传输中容易受到攻击。
您必须具有对所有数据库进行操作的访问权限,才能更新用户的阵列。revokeRole
roles
你必须有动作角色的数据库上的角色添加到用户。grantRole
要更改另一个用户pwd
或customData
字段,您必须在该用户的数据库上分别具有changeAnyPassword
和changeAnyCustomData
操作。
要修改自己的密码和自定义数据,您必须具有分别在用户数据库上授予changeOwnPassword
和
操作的特权。changeOwnCustomData
考虑到用户appClient01
在products
用下面的用户信息数据库:
以下updateUser
命令将完全替换用户customData
和roles
数据:
用户appClient01
在products
数据库中现在有下列用户信息: