需要为应用创建账号、调整权限或清理不再使用的账号时,可在云数据库 MongoDB 版控制台完成账号的查询、创建、重置密码、修改权限、修改备注和删除操作。本文说明各项操作的限制和确认方式,帮助避免因账号所在数据库、角色定义库或分片账号类型不匹配而导致操作失败。
使用限制
MongoDB 账号按数据库隔离。同一数据库内账号名不能重复,不同数据库中可以存在同名账号。创建账号时指定的所在数据库即账号鉴权库,默认为
admin;后续管理该账号时,必须使用其实际所在数据库。副本集账号的账号类型为
normal。分片集群中,ConfigServer 账号的账号类型为cs,Shard 直连账号的账号类型为db。实例处于变更状态时不能执行写操作;实例非运行状态时,写操作可能返回
OperationDenied.DBInstanceStatus。创建、重置密码、修改权限、修改备注和删除均为异步操作,提交成功仅表示操作已受理。请等待实例恢复运行中并刷新账号列表,再确认最终结果。root是实例自带的系统保留账号,不能新建同名账号或删除;可重置密码和修改备注,但不能按普通账号修改角色。其余三类账号在各操作上的约束对照如下:
账号类型
角色配置
操作约束
副本集账号(
normal)创建时必须指定角色
无账号类型特有约束
ConfigServer 账号(
cs)创建时必须指定角色
重置密码和修改备注时必须使用
cs账号类型Shard 直连账号(
db)权限固定,创建和修改权限时不支持配置角色
重置密码和修改备注时必须使用
db账号类型上表中三类账号均允许删除,但必须使用正确的账号类型和所在数据库。
查看账号
打开目标实例,在左侧导航栏单击账号管理。账号列表显示账号名、所在数据库、账户类型、角色、备注、账号状态和操作等信息,单击刷新可更新账号列表。使用账号列表时注意以下事项:
对目标账号执行管理操作时,以列表中的账号名、所在数据库和账户类型为准,不要手动更改所在数据库。
账号状态包括可用(
Available)和不可用(Unavailable)。账号管理为异步操作,且有一定的缓存时间,创建中的账号完成前可能不显示于列表;删除中的账号会直接从列表消失,因此应通过刷新后的列表确认操作结果。
创建账号
在账号管理页面单击创建账号。
配置账号信息和角色,配置项说明见下表。副本集账号与分片集群的
cs账号必须指定角色;分片集群的db直连账号不配置角色。角色的详细限制见配置角色。提交创建操作。目标账号出现于列表且状态为可用时,表示创建完成。
配置项 | 说明 |
账号名( | 长度为 2~16 个字符,以小写字母开头,以小写字母或数字结尾;中间仅允许小写字母、数字和下划线。不能使用系统保留名 |
密码( | 长度为 8~32 个字符,必须包含大写字母、小写字母、数字和特殊字符中的至少三类。允许的特殊字符为 |
所在数据库( | 账号鉴权库,默认为 |
角色( | 每项角色名和角色定义库必须成对指定。自定义角色应从实例角色列表中选择,角色定义库必须与该角色实际定义的数据库一致,不一定与账号鉴权库一致。 |
备注( | 可选。长度为 2~256 个字符,以字母或常用汉字(U+4E00~U+9FA5)开头;其余字符仅允许字母、上述范围的汉字、数字、下划线、点和短横线。 |
配置角色
创建账号和修改权限时适用相同的角色限制。账号鉴权库和角色定义库是不同概念:账号创建在 order 库时,后续管理该账号应使用 DBName=order;如果为该账号授予定义在 admin 库的自定义角色 order_reader,则该角色的定义库仍为 admin,不能改为账号鉴权库。
角色 | 角色定义库限制 |
| 可以选择任意库,包括 |
| 不允许选择 |
| 仅允许选择 |
自定义角色 | 必须使用该角色实际定义的数据库,不能改为其他库。 |
不允许授予 root、clusterAdmin、hostManager、clusterManager、__system、__queryableBackup 或 restore。alibabaCloudAdmin仅支持 MongoDB 4.4 及以上版本的实例。分片集群的 db 直连账号权限固定,不适用角色配置流程。
重置密码
在账号管理页面,根据账号名和所在数据库定位目标账号,单击对应的重置密码。
设置符合创建账号时密码规则的新密码并提交。
等待实例恢复运行中后,使用新密码验证连接。
账号所在数据库必须与创建时保持一致。例如,账号
test01创建在order库时,按默认的admin库定位会导致账号不存在。为分片集群账号重置密码时,必须使用正确的cs或db账号类型;使用normal或空值会返回InvalidCharacterType。
修改权限
此操作仅适用于支持角色变更的账号;分片集群的 db 直连账号权限固定,不能配置角色。
在账号管理页面找到目标账号,单击修改权限。
选择变更方式和角色。账号名和所在数据库应使用目标账号行的信息,角色定义库必须遵守配置角色中的限制。
提交操作,检查账号列表中目标账号的角色是否已更新。
变更方式(
ResetType)说明如下:
变更方式 | 说明 |
| 全量覆盖:使用本次指定的角色替换当前角色。提交前请确认不会移除仍需保留的权限。 |
| 追加授权:保留当前角色并添加本次指定的角色。 |
| 回收指定角色:待回收的角色必须是目标账号当前持有的角色;非 |
修改备注
在账号管理页面定位目标账号,单击修改备注。
填写符合创建账号时备注规则的内容并提交。
检查账号列表中目标账号的备注是否已更新。
修改分片集群账号的备注时,请使用正确的
cs或db账号类型。
删除账号
在账号管理页面定位目标普通账号,执行删除操作。
二次确认时,核对账号名和所在数据库,避免删除同名账号。
确认删除。目标账号从列表中消失时,表示删除完成。
不能删除
root账号。分片集群的db直连账号允许删除,但必须使用正确的账号类型和所在数据库。
常见问题
为什么账号在非 admin 库创建后,后续操作提示账号不存在?
请检查账号的实际所在数据库。账号建在非 admin 库时,重置密码、修改权限、修改备注和删除操作都必须使用创建时的同一所在数据库。系统不会搜索全部数据库,以免对同名账号执行错误操作。
修改权限时,为什么角色校验失败?
检查角色是否属于禁止授权的角色、角色名和角色定义库是否成对配置,以及角色定义库和实例版本是否符合限制。回收角色时,还需要确认该角色当前已授予目标账号。