首页 > 解决方案 > “未授权管理员执行命令”即使使用 root 角色

问题描述

我正在尝试在我的 mongodb 集群的主节点上执行以下“查询”:

> db.system.sessions.count()

集群给我一个错误如下:

“未授权管理员执行命令”,“未经授权”

文档说“root”角色隐含了“clusterAdmin”角色,我认为这足以查询会话数。

这是我登录的用户/角色:

{
    "user" : "admshard",
    "db" : "admin",
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        },
        {
            "role" : "clusterManager",
            "db" : "admin"
        },
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        },
        {
            "role" : "dbOwner",
            "db" : "admin"
        }
    ]
}

我的 mongodb 版本是 4.2.3。我正在使用 2 个数据库和 2 个仲裁器。

对此有任何线索吗?

谢谢!!

标签: mongodbadminroot

解决方案


root角色提供角色授予的权限:

  • 读写任意数据库
  • dbAdminAnyDatabase
  • userAdminAnyDatabase
  • 集群管理员
  • 恢复
  • 备份

clusterManager授予对配置数据库中所有非系统集合的查找权限

readWriteAnyDatabase在除 local 和 config 之外的所有数据库上授予与 readWrite 相同的权限,并在整个集群上提供 listDatabases 操作。

您可能需要创建一个自定义角色,并使用grantPivildgesToRole为其提供对 config.system.sessions 集合的查找操作。


推荐阅读