> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Square Cloud でのデータベース接続エラー: MySQL Host Not Allowed、MongoNetworkError、SSL

> Host is not allowed to connect to this MySQL server、MongoNetworkError、MongoDB Atlas の IP 許可リストの失敗、接続タイムアウト、ECONNREFUSED、Square Cloud での SSL/TLS 接続エラーを解決します。

Square Cloud でのデータベース接続エラーのほとんどは、SSL 証明書の不足、動的 IP を考慮していない IP 許可リスト、または認証情報の誤りのいずれかが原因です。以下から正確なエラーを見つけてください。

## "Host 'X' is not allowed to connect to this MySQL server"

**意味:** MySQL クライアントがこのメッセージとともに接続を拒否します。

**発生理由:** Square Cloud のマネージドデータベースは、すべての接続で **SSL が必須**です。このエラーは、証明書を読み込まずに接続を試みた際に表示されるもので、メッセージが示唆するようなファイアウォール/ホスト許可リストが原因ではありません。

**修正方法:**

1. Square Cloud ダッシュボードでデータベースを開き、証明書ファイル（CA、cert、key。通常 2〜3 個のフィールド）をダウンロードします。
2. クライアントの SSL/TLS 設定にそれらを読み込みます。
   * **GUI クライアント**（MySQL Workbench、DBeaver、HeidiSQL）: ダウンロードした証明書ファイルをクライアントの SSL タブに設定し、ダッシュボードに表示されているホスト/ポート/ユーザー/パスワードで接続します。
   * **コード（Prisma ORM）:** クライアント証明書と鍵を `.p12` に変換します。
     ```bash theme={null}
     openssl pkcs12 -export -out client.p12 -inkey client.key -in client.crt
     ```
     続いて次のように設定します。
     ```
     DATABASE_URL=mysql://USER:PASSWORD@HOST:PORT/DB?sslidentity=./client.p12&sslpassword=PASSWORD
     ```
     `client.p12` をアプリの `.zip` に含め、ダッシュボードの環境変数で `DATABASE_URL` を設定します。
3. ユーザー名とパスワードがダッシュボードに表示されているものと一致していることを確認し、証明書を生成したばかりの場合はデータベースを再起動してください。

<Warning>`certificate.pem` や `client.p12` を公開リポジトリにコミットしないでください。バージョン管理には含めず、アプリがディスクから読み込む場合はデプロイ用の `.zip` には含めてください。</Warning>

## MongoNetworkError と MongoDB Atlas の IP 許可リストの失敗

**意味:** （Square Cloud のマネージドデータベースではなく）外部にホストされた MongoDB Atlas クラスターが、認証情報は正しいにもかかわらず `MongoNetworkError: connection ... closed` で接続を拒否します。

**発生理由:** Square Cloud のアプリケーションコンテナは、**再起動のたびに変化する動的 IPv4 アドレス**を使用します。単一の静的 IP 向けに設定された MongoDB Atlas の IP 許可リストは、次に再起動するまでは動作しますが、その後静かに壊れます。

**修正方法（いずれかを選択）:**

1. **外部の Atlas が必要な場合の推奨策:** Atlas の Network Access で `0.0.0.0/0` を追加し、任意の IP からの接続を許可します。許可リストを広げる代わりに、強力な認証情報（長くランダムなパスワード、専用のデータベースユーザー、環境変数にのみ保存する接続文字列）で補います。
2. **全体としての推奨策:** 外部の Atlas クラスターの代わりに、[Square Cloud のマネージドデータベース](/ja/services/databases)にデータベースを移行します。アプリの隣にデータベースをホストすることで、IP 許可リストの問題自体がなくなり、ほぼゼロレイテンシーになります。

## 接続タイムアウトと ECONNREFUSED

**意味:** データベースへの接続を試みた際、アプリがタイムアウトするまでハングするか、`ECONNREFUSED` で即座に失敗します。

**目安となる発生理由:**

* **タイムアウト**（接続がハングし、即座には拒否されない）は、通常、接続先データベースのファイアウォールや IP 許可リストが接続をブロックしていることを意味します。多くの外部プロバイダーはデフォルトでデータセンター/海外の IP をブロックします。
* 即座に **ECONNREFUSED** や「authentication failed」になる場合は、通常、ホスト/ポートには到達できているものの、認証情報、データベース名、またはポート番号が誤っていることを意味します。

**修正方法:**

1. （Square Cloud のマネージドデータベースではなく）外部プロバイダーに接続する場合は、接続先のファイアウォールで Square Cloud の ASN（`398395` と `26548`）を許可してください。MongoDB Atlas のように IP ベースの許可リストしかサポートされない場合は、送信元 IP が動的であるため、代わりに強力な認証情報とともに `0.0.0.0/0` を使用してください。
2. ホスト、ポート、ユーザー名、パスワードを、プロバイダーまたは Square Cloud ダッシュボードに表示されている値と再確認してください。
3. 接続文字列内の特殊文字は URL エンコードしてください（パスワード内の `@`、`:`、`/` などをそのままにするとパースが壊れます）。
4. プロバイダーのドライバーが、接続文字列に明示的な `ssl=true`（または類似）パラメータを必要としないか確認してください。

## SSL/TLS 接続エラー

**意味:** クライアントがデータベースとの TLS ハンドシェイクを確立できない、またはその直後に認証エラーのように見えるが実際には証明書の問題であるエラーが発生します。

**発生理由:** Square Cloud のマネージドデータベースはすべての接続で SSL を必須とします。各データベースエンジンは、証明書をやや異なる形式で要求します。

* **Redis:** プロトコルは `redis://` ではなく、必ず `rediss://`（s が 2 つ）にしてください。形式は `rediss://default:PASSWORD@HOST:PORT` です。`node-redis` は `socket: { tls: true, ca: fs.readFileSync("certificate.pem") }` も受け付けます。Python の `redis` ライブラリは `ssl_ca_certs`/`ssl_certfile`/`ssl_keyfile` を受け取ります（ダッシュボードからダウンロードした結合済みの `certificate.pem` はいずれにも使えます）。
* **Drizzle ORM（Postgres）:** 標準の `pg` の `Pool` に `ssl: { ca, cert, key }` を設定します。すべて結合済みの `certificate.pem` から `fs.readFileSync` で読み込み、`drizzle.config.ts` でも同じ `ssl` オブジェクトを使用します。
* **JDBC（Java）:** クライアント鍵を PK8/DER 形式に変換し、JDBC URL の SSL プロパティで参照する必要があります。

**修正方法:** ダッシュボードのデータベースのページから証明書を再ダウンロードし（古い、または不完全な証明書ファイルはよくある原因です）、接続文字列がお使いのエンジンに対応した TLS 対応のプロトコル/スキームを使用していることを確認し、作成したばかりの場合はデータベースを再起動してください。

マネージドデータベースをゼロから作成・接続する方法については、[データベース](/ja/services/databases)を参照してください。

<Tip>上記のいずれにも一致しないエラーメッセージの場合は、サポートチームが正確な接続失敗の原因を診断します。</Tip>

## お問い合わせ

**技術的な問題**が解決しない場合は、**専門のサポートチーム**がお手伝いします。[**お問い合わせ**](https://squarecloud.app/ja/support)いただければ、どのような問題でも喜んで解決をサポートいたします — サポートの質の高さも、開発者が Google と Trustpilot で Square Cloud に[**402 件のレビューで 4.9/5**](https://www.trustpilot.com/review/squarecloud.app)という評価をつけている理由の 1 つです。
