使用Mongorestore将数据库恢复到MongoDB(3.4),并使用-auth启用,SASL错误



使用mongorestore,我试图将mongoDB数据库还原为新服务器(两个版本均为3.4)。新服务器已启用-ATH,因此您需要登录。数据库不存在,因此我希望Mongorestore使用-DB选项创建它。当未启用授权时,这起作用,但是如果我启用授权,还原失败在以下错误时失败:

失败:连接到DB服务器的错误:SASL身份验证步骤上的服务器返回错误:身份验证失败。

我在尝试还原时使用的是带有根角色的管理员帐户。

备份产品并将DEV恢复为我们对我们来说是一个相当规律的活动,但是我们不能仅仅因为上述错误而丢弃现有数据库并重新创建它,而不是我们禁用授权,这没有太大的意义。有没有更好的方法来执行此操作/避免SASL错误/不必禁用auth?

我遇到了同样的错误,虽然我无法弄清楚与管理员用户恢复是错误的(我的直觉是密码中的 !,但逃脱没有帮助)我能够通过专门为角色创建新用户来恢复。

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

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

mongorestore-主机名:27017 -U管理员-P Pass -authenticationDatabase Admin -D TargetDatabase/data Data/targetDataBaserestore

告诉Mongo使用管理员数据库来验证您正在传递的用户。如果该用户分配了正确的权利,则可以创建新的数据库。

首先访问您的DB到4366端口,然后运行此命令

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

最新更新