web-dev-qa-db-ja.com

mongorestoreを使用して、データベースをMongoDB(3.4)に--authを有効にして復元します。SASLエラー

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

失敗:dbサーバーへの接続エラー:SASL認証ステップでサーバーがエラーを返しました:認証に失敗しました。

復元を試みるときに、rootの役割を持つ管理者アカウントを使用しています。

Prodをバックアップしてdevに復元することは、私たちにとってかなり定期的なアクティビティですが、上記のエラーのために既存のデータベースを削除して再作成することはできません。これを行う/ SASLエラーを回避する/認証を無効にする必要がないより良い方法はありますか?

9
user7593937

私は同じエラーを受け取りましたが、管理者ユーザーで復元すると何が問題なのか理解できませんでした(私の直感は!エスケープしても役に立たなかったパスワード)役割専用の新しいユーザーを作成することで、復元できました。

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

PerconaのAdamo Toneteのおかげで、彼はこの問題の解決を助けてくれました。 rootロールを持つ管理者ユーザーを使用してデータベースを復元する場合は、mongorestoreコマンドで認証データベースとユーザーを指定する必要があります。

mongorestore-ホストホスト名:27017 -u adminuser -p pass --authenticationDatabase admin -d TargetDatabase/Data/TargetDatabaseRestore

これにより、mongoにadminデータベースを使用して、渡すユーザーを認証するように指示します。そのユーザーに適切な権限が割り当てられている場合、新しいデータベースを作成できます。

3
user7593937

最初にdbを4366ポートにアクセスし、次にこのコマンドを実行します

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