updateRole - 更新角色
db.updateRole(<rolename>, <role>)
Sdb
该函数用于更新自定义角色,会覆盖原定义的权限和继承角色
rolename ( string,必填 ) 通过rolename指定待更新的角色名:
role ( object,必填 ) 通过role指定更新的角色的权限和继承角色:
Privileges ( array ) 授予角色的权限数组。一个权限由一个Resource和Actions组成。
Roles ( array ) 该角色继承权限的角色数组。可以包含其他的自定义角色或者内建角色。
函数执行成功时,无返回值。
函数执行失败时,将抛异常并输出错误信息。
常见异常如下:
错误码 | 错误类型 | 描述 | 解决方法 |
---|---|---|---|
-6 | SDB_INVALIDARG | 参数错误 | 检查权限定义是否符合模型 |
-409 | SDB_AUTH_ROLE_NOT_EXIST | 指定角色不存在 |
当异常抛出时,可以通过 getLastErrMsg() 获取错误信息或通过 getLastError() 获取错误码。更多错误处理可以参考常见错误处理指南。
v5.8 及以上版本
在集群中更新名为foo_developer
的角色,使其继承内建角色_foo.readWrite
,并额外为其授予在集群上的snapshot
权限
> db.updateRole("foo_developer", { Privileges:[ {Resource:{Cluster:true}, Actions:["snapshot"]} ], Roles:["_foo.readWrite"] })