使用mongorestore将数据库还原到启用了--auth,SASL错误的MongoDB(3.4)

时间:2017-02-20 15:58:01

标签: mongodb sasl mongorestore

使用mongorestore,我试图将MongoDB数据库恢复到新服务器(两个版本都是3.4)。新服务器启用了-auth,因此您需要登录。数据库不存在所以我希望mongorestore使用--db选项创建它。这在未启用授权时有效但如果我启用授权,则还原将失败,并显示以下错误:

失败:连接到数据库服务器时出错:SASL身份验证步骤中服务器返回错误:身份验证失败。

我在尝试恢复时使用的是具有root角色的管理员帐户。

备份prod并恢复到dev对我们来说是一个相当规律的活动,但是由于上面的错误,我们不能只丢弃现有数据库并重新创建它,除非我们禁用没有多大意义的授权。有没有更好的方法来做到这一点/避免SASL错误/不必禁用auth?

3 个答案:

答案 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。