updateRole¶更新用户定义的角色。该
updateRole命令必须在角色的数据库上运行。
对字段的更新将完全替换前一个字段的值。要授予或删除角色或特权而不替换所有值,请使用以下一个或多个命令:
警告
对privilegesor 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
privilegesgrantRoleadmin
cluster资源您必须对目标角色的数据库具有操作,才能更新角色的文档。setAuthenticationRestriction
authenticationRestrictions
以下是updateRole更新数据库myClusterwideAdmin角色的命令示例admin。尽管privileges和
roles数组都是可选的,但至少需要两个之一:
要查看角色的特权,请使用rolesInfo命令。