2017-02-20 11 views
2

、私は(両方のバージョンは3.4です)新しいサーバーにMongoDBのデータベースを復元しようとしています。新しいサーバーでは、-authが有効になっているため、ログインする必要があります。データベースが存在しないので、mongorestoreが--dbオプションを使用して作成するようにします。認証が有効になっていないとき、これは動作しますが、私は許可を有効にした場合、復元は、次のエラーで失敗します。有効--authでMongoDBの(3.4)にデータベースを復元するために使用しmongorestore、SASLエラー

が失敗しました:DBサーバーへの接続エラー:サーバーは、SASL認証ステップでエラーが返されました:認証に失敗しました。

私は、復元しようとするルートの役割を持つ管理者アカウントを使用しています。

prodの復元とdevへの復元はかなり普通の活動ですが、あまり意味のない承認を無効にしない限り、上記のエラーのために既存のデータベースを削除して再作成することはできません。これを行うより良い方法はありますか/ SASLのエラーを避ける/認証を無効にする必要はありませんか? PerconaでアダモTonete以上に

答えて

1

おかげで、彼は、私たちはこの問題を解決する助けました。管理者ユーザーをrootロールで使用してデータベースを復元する場合は、mongorestoreコマンドで認証データベースとユーザーを指定する必要があります。あなたが渡しているユーザーを認証するために管理データベースを使用するためのmongoを伝えます。そのユーザが正しい権限が割り当てられている場合、新しいデータベースを作成することができるようになります

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

5

私は同じエラーが発生していましたが、私の管理者で何が間違っていたのか分かりませんでしたが(私の勘違いはパスワードで!です)、新しいユーザは特にその役割を果たします。 Mongoのシェルで

>use admin; 

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

端子In:

$mongorestore --host databasehost:12345 --username restoreuser --password restorepwd --authenticationDatabase admin --db targetdb ./path/to/dump/ 
関連する問題