我在远程主机上设置了副本,需要进行身份验证才能进行连接。原始(root)用户是在我用于远程连接的admin
数据库中创建的。我正在建立一些"备份"将数据库复制到副本集的脚本,稍后我应该能够将数据库从远程位置复制到其他MongoDB实例中。
所以我编写了脚本来复制数据库,方法是连接 TO 远程位置,进行身份验证,然后使用db.runCommand
运行copydb: 1
。它很好用,没问题。
当我尝试将数据库复制回我的本地计算机时出现问题,主要是因为我必须在copydb
命令中进行身份验证。我最初尝试使用相同的技术(db.runCommand
),但由于nonce和key身份验证本身很混乱,我首先尝试使用{{1}手动将命令编写到mongo的shell中来解决问题根据文档,它应该为我做这个过程。
这是命令:
db.copyDatabase
回应:
db.copyDatabase('from_db', 'to_db', 'remote.host.example.com', 'my_user', 'my_password')
我尝试切换角色(root,userAdmin,readWrite,...)但没有任何作用。我尝试在我想要复制的数据库中创建另一个用户,但除了稍微改变响应之外,似乎没有做太多其他用户:
{ "ok" : 0, "errmsg" : "Authentication failed.", "code" : 18 }
我到处搜索,查看了手册中的任何相关内容,我仍然无法弄明白。
我如何从需要身份验证的远程位置复制数据库?