当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《MongoDB:未经数据库授权执行命令eval》经验,为你挑选了1个好方法。

这是我正在运行的查询:

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数据库中的用户:

query:  db.getUsers();


/* 2 */
{
    "_id" : "admin.moiz",
    "user" : "moiz",
    "db" : "admin",
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ]
}

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



1> 小智..:

对于有相同问题的人,解决方案在的文档中db.eval():就在这里

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


除了文档中的引言外,这里确实没有什么其他内容,所以我真的不确定是否应该提供答案。响应的最大问题是,它没有突出显示实际上不建议使用eval并应将其完全从MongoDB中删除,因此任何人编写使用该代码的当前代码都是不明智的,因为他们的代码将停止运行工作,这实际上是在文档中阐明。和其他各种警告一样,这些警告实际上应该放在任何响应的最前沿。
推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有