参考 > 参考 > mongo Shell方法 > 用户管理方法 > db.updateUser()
db.
updateUser
(用户名,更新,writeConcern )¶在运行方法的数据库上更新用户的配置文件。对字段的更新将完全替换前一个字段的值。这包括对用户roles
阵列的更新。
警告
更新roles
数组时,将完全替换以前的数组的值。要添加或删除角色而不替换所有用户现有角色,请使用db.grantRolesToUser()
或
db.revokeRolesFromUser()
方法。
该db.updateUser()
方法使用以下语法:
小费
从mongo
Shell的4.2版本开始,您可以将该passwordPrompt()
方法与各种用户身份验证/管理方法/命令结合使用,以提示输入密码,而不是直接在方法/命令调用中指定密码。但是,您仍然可以像在早期版本的mongo
Shell中一样直接指定密码
。
该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"
。