代码之家  ›  专栏  ›  技术社区  ›  Abdul Moiz

MongoDB:未在数据库上授权执行命令eval

  •  1
  • Abdul Moiz  · 技术社区  · 7 年前

    这是我正在运行的查询:

    db.surveyquestion.copyTo('surveyquestionV2')
    

    我收到的错误:

    {
        "message" : "MongoError: not authorized on GenericSurveyTool to execute command { $eval: function (collName, newName) {\r" +
                  "var from = db[collName];\r" +
                  "..., args: [ 'surveyquestion', 'surveyquestionV2' ], $db: 'GenericSurveyTool' }",
        "stack" : "script:1:19",
        "code" : 13
    }
    

    用于运行此查询的admin db中的我的用户:

    query:  db.getUsers();
    
    
    /* 2 */
    {
        "_id" : "admin.moiz",
        "user" : "moiz",
        "db" : "admin",
        "roles" : [
            {
                "role" : "root",
                "db" : "admin"
            }
        ]
    }
    

    此用户具有root角色,但仍无法复制集合。请帮忙!!

    1 回复  |  直到 7 年前
        1
  •  6
  •   Neil Lunn    7 年前

    对于有相同问题的人,解决方案在 db.eval() : just right here

    如果启用了授权,您必须有权访问所有资源上的所有操作,才能运行eval。不建议提供此类访问,但如果您的组织要求用户运行eval,请创建一个角色,授予对任何资源的任何操作。不要将此角色分配给任何其他用户。