Docs Menu
Docs Home
/ / /
Rust ドライバー

接続のトラブルシューティング

項目一覧

  • サーバー接続エラー
  • 接続stringの確認
  • ファイアウォールを設定する
  • 接続数の確認
  • 認証エラー
  • 認証情報の形式確認
  • 認証メカニズムを検証する
  • 認証データベースでユーザーがであることを確認
  • DNS 解決エラー
  • データベース配置の可用性を確認
  • ネットワーク アドレスの確認

このページでは、MongoDB Rust ドライバーを使用して MongoDB の配置に接続する際に発生する可能性のある問題に対する潜在的な解決策を提供します。

注意

このページでは、接続の問題のみを説明します。 MongoDB またはドライバーに関するその他の問題が発生した場合は、次のリソースにアクセスしてください。

  • 操作中にドライバーが発生するさまざまなエラーの種類を処理する方法に関する推奨事項については、「 操作エラー処理」を参照してください。

  • バグの報告、ドライバーへの貢献、およびリソースの検索に関する情報は「問題とヘルプ」のページを参照してください

  • MongoDB Community フォーラム では、質問、ディスカッション、または一般的なテクニカルサポートが受けられます。

  • Rust ドライバーに関するよくある質問とそれに対応する回答については、「よくある質問(FAQ) 」セクションを参照してください

サーバーに接続しようとしたときに問題が発生した場合、Rust ドライバーはエラー メッセージを返します。 このエラーが次のメッセージのようになった場合、ドライバーが MongoDB 配置に接続できないことを示します。

Error: Error { kind: ServerSelection { message: "Server selection timeout:
No available servers. Topology: { Type: Unknown, Servers: [ { Address:
127.0.0.1:27017, Type: Unknown, Error: Kind: I/O error: Connection refused
(os error 61), labels: {} } ] }" }, labels: {}, wire_version: None, source:
None }

次のセクションでは、問題を解決するのに役立つ可能性のある方法について説明します。

接続stringのホスト名とポート番号が両方とも正確であることを確認してください。 サンプル エラー メッセージでは、ホスト名は 127.0.0.1で、ポートは27017です。 MongoDB Server のインスタンスのデフォルトのポート値は27017ですが、MongoDB を別のポートでリッスンするように構成できます。

レプリカセットに接続するときは、すべてのレプリカセット ホストを 接続stringに含めます。 接続string内の各ホストをカンマで区切ります。 これにより、ホストの 1 つが到達できない場合でも、ドライバは接続を確立できます。

レプリカセットで複数のホストを指定する方法の詳細については、 接続ガイド の「レプリカセットへの接続」セクションを参照してください。

MongoDB 配置がファイアウォールの背後でホストされている場合は、MongoDB がリッスンするポートがファイアウォールで開いていることを確認します。 配置がデフォルトのネットワークポートでリッスンする場合は、ファイアウォールでポート27017が開いていることを確認します。 配置が別のポートでリッスンする場合は、ファイアウォールでポートが開いていることを確認します。

警告

MongoDB 配置がリッスンするポートであることが確実な場合を除き、ファイアウォール ポートを開かないでください。

Clientインスタンスは、接続プール内で同時にオープンする接続の最大数をサポートします。 この値は構成パラメータmaxPoolSizeによって定義され、デフォルトでは100に設定されます。 オープンな接続の数がmaxPoolSizeと等しい場合、サーバーは接続が利用可能になるまで待機します。 この待機時間がmaxIdleTimeMSの値を超えると、ドライバーはエラーで応答します。

ドライバーで接続プールがどのように機能するかについて詳しくは、「 Rust ドライバーで接続プールがどのように機能するか 」を参照してください。 FAQ ページを参照してください。

認可が正しく構成されていない場合、Rust ドライバーは MongoDB 配置に接続できない可能性があります。 このような場合、ドライバーは次のメッセージのようなエラー メッセージを表示します。

Error: Error { kind: Authentication { message: "SCRAM failure: bad auth :
authentication failed" }, labels: {}, wire_version: None, source: Some(Error
{ kind: Command(CommandError { code: 8000, code_name: "AtlasError", message:
"bad auth : authentication failed", topology_version: None }),
labels: {}, wire_version: None, source: None }) }

次のセクションでは、問題を解決するのに役立つ可能性のある方法について説明します。

認証の問題の最も一般的な原因の 1 つは、 MongoDB接続string内の無効な認証情報の形式です。

Tip

接続文字列の詳細については、「接続stringの作成」ガイドを参照してください。

接続stringにユーザー名とパスワードが含まれている場合は、それらが正しく形式されていることを確認してください。

注意

ユーザー名またはパスワードに次の文字のいずれかが含まれている場合は、パーセント エンコードする必要があります

: / ? # [ ] @

接続stringで、パーセント エンコードされたユーザー名とパスワードを使用します。

資格情報と認証メカニズムが正しいことを確認します。 接続stringのオプションで認証資格情報を指定できます。

あるいは、 Credential構造体で認証情報を指定することもできます。

認証の詳細については、認証メカニズムのガイドを参照してください。

ユーザー名とパスワードベースの認証方法を使用する場合、認証データベースにユーザー名を定義する必要があります。

デフォルトの認証データベースはadminデータベースです。 認証に別のデータベースを使用するには、 接続stringで authSource オプションを指定します。

次の例えでは、認証データベースとしてusersデータベースを使用するように MongoDB に指示します。

let uri = "mongodb://<username>:<password>@<hostname>:<port>/?authSource=users";
let client = Client::with_uri_str(uri).await?;

Rust ドライバーが DNS 接続を解決できない可能性があります。 その場合、次のメッセージのようなエラー メッセージが表示される場合があります。

Error: Error { kind: DnsResolve { message: "sample message. type:
SRV class: IN" }, labels: {}, wire_version: None, source: None }

ドライバーがこのエラーを報告する場合は、問題を解決するために次のセクションの方法を試してください。

MongoDB Atlas に接続していて、ドライバーが Atlas データベース配置の DNS ホストを検出できない場合は、データベース配置が一時停止または削除される可能性があります。

データベース配置が Atlas に存在することを確認します。 クラスターが一時停止されている場合は、Atlas UI またはAtlas コマンドラインインターフェイスでクラスターを再開できます。

クラスターを再開する方法については、Atlas ドキュメントの「 1 つのクラスターの再開」を参照してください。

接続stringのネットワークアドレスまたはホスト名が正確であることを確認してください。

配置がMongoDB Atlasでホストされている場合は、 「 クラスターへの接続 」チュートリアルに従って、 Atlas接続stringを見つけることができます。

戻る

FAQ