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

使用mongorestore将数据库还原到MongoDB(3.4),并启用--auth,SASL错误,mongodb,sasl,mongorestore,Mongodb,Sasl,Mongorestore,使用mongorestore,我试图将MongoDB数据库恢复到新服务器(两个版本都是3.4)。新服务器已启用-auth,因此您需要登录。数据库不存在,因此我希望mongorestore使用--db选项创建它。如果未启用授权,则此操作有效,但如果启用授权,则还原将失败,并出现以下错误: 失败:连接到数据库服务器时出错:服务器在SASL身份验证步骤上返回错误:身份验证失败 尝试还原时,我正在使用具有root角色的管理员帐户 备份prod并恢复到dev对我们来说是一项相当常规的活动,但是我们不能因为

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

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

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


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

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

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


这会告诉mongo使用管理数据库对您传入的用户进行身份验证。如果该用户分配了正确的权限,它将能够创建新的数据库。

我收到了相同的错误,但我无法找出我的管理员用户恢复时出现了什么问题(我的直觉是密码中有一个
,转义没有帮助)我可以通过专门为角色创建一个新用户来进行恢复

在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/
终端中:

>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/

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

mongorestore --port 4366 -u admin -p password --authenticationDatabase admin -d dealmoney /home/yash/Desktop/prodDump/teatingToProductionLastDump/dealmoney .