You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行MongoDB createRole遇Unauthorized错误,求权限配置方案

MongoDB角色创建权限问题解决方案

现有账号权限

账号svc-mydbuser的现有权限配置如下:

{
   privileges: [
      {
         actions: ["dropRole", "createRole", "grantRole", "find", "viewRole"],
         resource: { db: "admin", collection: "" }
      },
      {
         actions: [
            "changeStream", "collStats", "createIndex", "dbHash",
            "dbStats", "dropIndex", "find", "killCursors", "listCollections",
            "listIndexes", "planCacheRead", "insert", "update", "remove"
         ],
         resource: { db: "admin", collection: "system.roles" }
      },
      {
         actions: ["dropDatabase", "createDatabase"],
         resource: { db: "core-POC", collection: "" }
      }],
   roles: [
      { role: "readWrite", db: "core-POC" },
      { role: "userAdmin", db: "admin" }
   ]
}

执行操作及报错

登录MongoDB后在admin库执行以下创建角色命令:

use admin;

db.adminCommand(
   {
      createRole: "CN=GLB-Admin-S-L,OU=Groups - Applications,OU=Global Admin Groups,DC=dmzprod01,DC=mybank,DC=com",
      privileges: [],
      roles: [
         { role: "read", db: "core-POC" }
      ]
   }
);

返回报错信息:

{
        "operationTime" : Timestamp(1691051515, 106),
        "ok" : 0,
        "errmsg" : "not authorized on admin to execute command { createRole: \"CN=GLB-Admin-S-L,OU=Groups - Applications,OU=Global Admin Groups,DC=dmzprod01,DC=mybank,DC=com\", privileges: [], roles: [ { role: \"read\", db: \"core-POC\" } ], lsid: { id: UUID(\"0174cbc1-0595-40f2-9609-bd43927c06f4\") }, $clusterTime: { clusterTime: Timestamp(1691048964, 1), signature: { hash: BinData(0, 2B98A040357462EBE5CB97642C569DC3A6958C81), keyId: 7216972790308536321 } }, $db: \"admin\" }",    
        "code" : 13,    
        "codeName" : "Unauthorized",    
        "$clusterTime" : {    
                "clusterTime" : Timestamp(1691051515, 106),    
                "signature" : {    
                        "hash" : BinData(0,"ygtzgwKkaNXmNzIXYCzbk9yprbk="),    
                        "keyId" : NumberLong("7216972790308536321")    
                }    
        }    
}

权限配置说明

报错原因

账号svc-mydbuser已具备admin库的createRole、dropRole权限,但本次创建的角色引用了core-POC数据库的内置read角色,账号缺少对core-POC数据库的grantRole权限,导致无法完成跨库角色的授予操作。

需新增的权限

为了成功执行createRole(包含跨库角色引用)和dropRole命令,需要给账号新增以下权限:

  • 针对core-POC数据库的grantRole权限,配置如下:
{
  "actions": ["grantRole"],
  "resource": { "db": "core-POC", "collection": "" }
}

关于dropRole权限

现有账号已具备admin库的dropRole权限,若删除的是admin库内的角色,现有权限已满足需求;若需删除其他数据库的角色,则需对应添加目标数据库的dropRole权限。

内容的提问来源于stack exchange,提问作者Ashar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:40:28