updateRole
¶更新用户定义的角色。该
updateRole
命令必须在角色的数据库上运行。
对字段的更新将完全替换前一个字段的值。要授予或删除角色或特权而不替换所有值,请使用以下一个或多个命令:
警告
对privileges
or roles
数组的更新将完全替换先前数组的值。
该updateRole
命令使用以下语法。要更新的角色,你必须提供privileges
阵列,roles
阵列,或两者:
该updateRole
命令具有以下字段:
领域 | 类型 | 描述 |
---|---|---|
updateRole |
串 | 要更新的用户定义角色角色的名称。 |
privileges |
数组 | 可选的。如果未指定roles 数组,则为必需。授予角色的特权。对该privileges
数组的更新将覆盖以前的数组的值。有关指定特权的语法,请参见privileges
数组。 |
roles |
数组 | 可选的。如果未指定privileges 数组,则为必需。该角色从中继承特权的角色。对该roles 数组的更新将
覆盖以前的数组的值。 |
authenticationRestrictions |
数组 | 可选的。 服务器对角色强制执行的身份验证限制。指定允许授予该角色的用户连接和/或可以从其连接的IP地址和CIDR范围的列表 。 3.6版的新功能。 |
writeConcern |
文献 | 可选的。更新操作的写入关注级别。该writeConcern 文档与getLastError 命令使用相同的字段。 |
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。
您必须对所有数据库执行操作才能更新角色。revokeRole
您必须对阵列中每个角色的数据库具有操作,才能更新阵列。grantRole
roles
您必须对阵列中每个特权的数据库具有操作才能更新阵列。如果特权的资源跨越数据库,则您必须在数据库上拥有该
资源。如果特权是以下任意一项,则特权跨越数据库:grantRole
privileges
grantRole
admin
cluster
资源您必须对目标角色的数据库具有操作,才能更新角色的文档。setAuthenticationRestriction
authenticationRestrictions
以下是updateRole
更新数据库myClusterwideAdmin
角色的命令示例admin
。尽管privileges
和
roles
数组都是可选的,但至少需要两个之一:
要查看角色的特权,请使用rolesInfo
命令。