使用mongorestore,我试图将MongoDB数据库恢复到新服务器(两个版本都是3.4)。新服务器启用了-auth,因此您需要登录。数据库不存在所以我希望mongorestore使用--db选项创建它。这在未启用授权时有效但如果我启用授权,则还原将失败,并显示以下错误:
失败:连接到数据库服务器时出错:SASL身份验证步骤中服务器返回错误:身份验证失败。
我在尝试恢复时使用的是具有root角色的管理员帐户。
备份prod并恢复到dev对我们来说是一个相当规律的活动,但是由于上面的错误,我们不能只丢弃现有数据库并重新创建它,除非我们禁用没有多大意义的授权。有没有更好的方法来做到这一点/避免SASL错误/不必禁用auth?
答案 0 :(得分:12)
我收到了同样的错误,虽然我无法弄清楚恢复我的管理员用户有什么问题(我的预感是密码中的!
,逃脱没有帮助)我能够恢复专门为角色创建新用户。
在mongo shell中:
>use admin;
>db.createUser({
user: 'restoreuser',
pwd: 'restorepwd',
roles: ['restore']
});
在终端:
$mongorestore --host databasehost:12345 --username restoreuser --password restorepwd --authenticationDatabase admin --db targetdb ./path/to/dump/
答案 1 :(得分:3)
感谢Adamo Tonete在Percona,他帮助我们解决了这个问题。如果要使用具有root角色的admin用户还原数据库,则需要在mongorestore命令中指定身份验证数据库和用户。
mongorestore --host主机名:27017 -u adminuser -p pass --authenticationDatabase admin -d TargetDatabase / Data / TargetDatabaseRestore
告诉mongo使用admin数据库对您传入的用户进行身份验证。如果该用户分配了正确的权限,则可以创建新数据库。
答案 2 :(得分:0)
首先将您的数据库访问4366端口,然后运行此命令
mongorestore --port 4366 -u admin -p password --authenticationDatabase admin -d Dealmoney / home / yash / Desktop / prodDump / teatingToProductionLastDump / dealmoney。