MongoDB:未在数据库上授权执行命令eval
这是我正在运行的查询:MongoDB:未在数据库上授权执行命令eval,mongodb,mongodb-query,database-administration,rbac,Mongodb,Mongodb Query,Database Administration,Rbac,这是我正在运行的查询: db.surveyquestion.copyTo('surveyquestionV2') 我得到的错误是: { "message" : "MongoError: not authorized on GenericSurveyTool to execute command { $eval: function (collName, newName) {\r" + "var from = db[collName];\r" +
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角色,但仍无法复制集合。请帮忙 对于有相同问题的人,解决方案在
db.eval()
的文档中:
如果启用了授权,您必须有权访问所有资源上的所有操作才能运行eval。不建议提供此类访问,但如果您的组织要求用户运行eval,请创建一个角色,授予对任何资源的任何操作。不要将此角色分配给任何其他用户
对于有相同问题的人,解决方案在
db.eval()的文档中:
如果启用了授权,您必须有权访问所有资源上的所有操作才能运行eval。不建议提供此类访问,但如果您的组织要求用户运行eval,请创建一个角色,授予对任何资源的任何操作。不要将此角色分配给任何其他用户
尝试使用dbOwner
而不是在角色阵列中使用root。这不起作用,同样的问题仍然存在。请确定,在启动查询之前,您是否以moiz身份进行了身份验证?是的,这是肯定的。我刚才在db.eval()命令的文档中看到:如果启用了授权,为了运行eval,您必须有权访问所有资源上的所有操作。不建议提供此类访问,但如果您的组织要求用户运行eval,请创建一个角色,授予对任何资源的任何操作。不要将此角色分配给任何其他用户。
尝试使用dbOwner
而不是角色数组中的root。这不起作用,同样的问题仍然存在。请确定,您是否在启动查询之前验证为moiz?是的,这是肯定的。我刚才在db.eval()命令的文档中看到:如果启用了授权,为了运行eval,您必须有权访问所有资源上的所有操作。不建议提供此类访问,但如果您的组织要求用户运行eval,请创建一个角色,授予对任何资源的任何操作。不要将此角色分配给任何其他用户。
除了文档中的引用之外,这里没有什么内容,所以我真的不确定它是否应该是一个答案。响应中最大的问题是,它没有强调eval
实际上已经弃用,应该从MongoDB中完全删除,因此任何人编写当前代码都是不明智的,因为他们的代码将停止工作,这实际上在文档中有详细说明。正如其他各种警告一样,这些警告应该放在任何回应的最前面。这里除了引用文档中的一段话之外,真的没有什么,所以我真的不确定它是否应该是一个答案。响应中最大的问题是,它没有强调eval
实际上已经弃用,应该从MongoDB中完全删除,因此任何人编写当前代码都是不明智的,因为他们的代码将停止工作,这实际上在文档中有详细说明。正如其他各种警告一样,这些警告确实应该放在任何回应的前列。