MongoDB:执行'copydb'命令时如何进行身份验证

MongoDB:执行'copydb'命令时如何进行身份验证,mongodb,authentication,Mongodb,Authentication,我在远程主机上有一个副本集,需要身份验证才能连接。原始(root)用户是在admin数据库中创建的,我使用该数据库进行远程连接。我正在构建某种“备份”脚本,将db复制到副本集中,稍后我应该能够将db从远程位置复制到其他MongoDB实例中 因此,我编写了脚本来复制数据库,方法是将连接到远程位置,进行身份验证,然后使用copydb:1运行db.runCommand。它工作得很好,这里没有问题 当我试图将数据库复制回本地机器时,就是出现问题的时候,主要是因为我必须作为copydb命令的一部分进行身份

我在远程主机上有一个副本集,需要身份验证才能连接。原始(root)用户是在
admin
数据库中创建的,我使用该数据库进行远程连接。我正在构建某种“备份”脚本,将db复制到副本集中,稍后我应该能够将db从远程位置复制到其他MongoDB实例中

因此,我编写了脚本来复制数据库,方法是将连接到远程位置,进行身份验证,然后使用
copydb:1
运行
db.runCommand
。它工作得很好,这里没有问题

当我试图将数据库复制回本地机器时,就是出现问题的时候,主要是因为我必须作为
copydb
命令的一部分进行身份验证。我最初尝试使用相同的技术(
db.runCommand
),但由于nonce和密钥身份验证本身比较混乱,我尝试首先使用
db.copyDatabase
将命令手动写入mongo的shell,根据文档,它应该为我完成这个过程

这是命令:

db.copyDatabase('from_db', 'to_db', 'remote.host.example.com', 'my_user', 'my_password')
其回应如下:

{ "ok" : 0, "errmsg" : "Authentication failed.", "code" : 18 }
我试着切换角色(root、userAdmin、readWrite等等),但没有任何效果。我尝试在我试图复制的数据库中创建另一个用户,但除了将响应稍微更改为:

{
    "ok" : 0,
    "errmsg" : "unable to login { ok: 0.0, code: 18, errmsg: \"Authentication failed.\" }"
}
我到处都找遍了,翻阅了手册中似乎有点关系的任何东西,但我还是弄不明白


如何从需要身份验证的远程位置复制db???

在执行复制之前,您尝试了:db.auth(“超级用户”、“超级用户\u密码”)?如果我在本地主机上运行
db.auth
,它不会影响我的远程主机。他们不共享用户,所以身份验证是不同的。好的,对不起,mongdb的版本是相同的吗?什么版本?我几分钟前才意识到,不是。遥控器是3.2.1,本地是3.0.6,我会尝试匹配这两个版本,看看是否有帮助。