使用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 .