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