2017-02-20 136 views
2

使用mongorestore,我试图恢复MongoDB数据库到新服务器(包括版本是3.4)。新服务器启用了-auth,因此您需要登录。数据库不存在,所以我想让mongorestore使用--db选项创建它。此工程时,未启用授权,但如果我启用授权还原失败,出现以下错误:使用mongorestore恢复与--auth启用数据库MongoDB中(3.4),SASL错误

失败:错误连接到数据库服务器:在SASL认证步骤,服务器返回的错误:验证失败。

我使用的是管理员帐户,当我尝试恢复根的作用。

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

回答

1

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

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

这告诉蒙戈使用管理数据库,要传递的用户进行身份验证。如果用户有正确权限,将能够创建新的数据库。

5

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

在蒙戈壳:

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