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

use*_*937 6 sasl mongodb mongorestore

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

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

我在尝试还原时使用的是具有root角色的管理员帐户.

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

Zug*_*alt 12

我得到了同样的错误,虽然我无法弄清楚恢复与我的管理员用户有什么不对(我的预感是!在密码中逃脱没有帮助)我能够通过专门为角色创建一个新用户来恢复.

在mongo shell中:

>use admin;

>db.createUser({
  user: 'restoreuser',
  pwd: 'restorepwd',
  roles: ['restore']
});
Run Code Online (Sandbox Code Playgroud)

在终端:

$mongorestore --host databasehost:12345 --username restoreuser --password restorepwd --authenticationDatabase admin --db targetdb ./path/to/dump/
Run Code Online (Sandbox Code Playgroud)


use*_*937 6

感谢Percona的Adamo Tonete,他帮助我们解决了这个问题。如果要使用具有root角色的admin用户还原数据库,则需要在mongorestore命令中指定身份验证数据库和用户。

mongorestore --host主机名:27017 -u adminuser -p pass --authenticationDatabase admin -d TargetDatabase / Data / TargetDatabaseRestore

这会告诉mongo使用管理数据库来验证您要传入的用户。如果该用户分配了正确的权限,则可以创建新数据库。


小智 5

首先将您的数据库访问到 4366 端口,然后运行此命令

mongorestore --port 4366 -u admin -p password --authenticationDatabase admin -d dealmoney /home/yash/Desktop/prodDump/teatingToProductionLastDump/dealmoney .
Run Code Online (Sandbox Code Playgroud)