MongoDB执行grantRolesToUser报错Could not find role: root问题问询
报错原因
- MongoDB的
root内置角色仅定义在系统admin库中,不存在于业务库test_db下,你分配角色时指定db: "test_db"会强制MongoDB在test_db中查找不存在的root角色,因此抛出could not find role: root@test_db错误。 - 你创建用户时配置了
roles: []空权限数组,该用户没有任何数据库操作权限,因此执行聚合操作时会触发未授权报错。
解决方法
方案1:分配root权限(不推荐,权限过大)
root属于全实例超级管理员权限,仅需指定角色归属admin库即可,根据你的用户归属test_db的情况,执行以下命令即可:
# 切换到用户所属的test_db库 use test_db # 授予root角色,角色所属库指定为admin db.grantRolesToUser( "some_user", [ { role: "root", db: "admin" } ] )
方案2:分配最小够用权限(推荐)
如果你仅需要操作test_db的读写、聚合等常规业务操作,直接授予readWrite角色即可满足需求,避免权限溢出:
use test_db db.grantRolesToUser( "some_user", [ "readWrite" ] )
内容的提问来源于stack exchange,提问作者Web Jigooli
相关产品推荐
相关产品推荐

