メインコンテンツへスキップ
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 に変換します。
      続いて次のように設定します。
      client.p12 をアプリの .zip に含め、ダッシュボードの環境変数で DATABASE_URL を設定します。
  3. ユーザー名とパスワードがダッシュボードに表示されているものと一致していることを確認し、証明書を生成したばかりの場合はデータベースを再起動してください。
certificate.pemclient.p12 を公開リポジトリにコミットしないでください。バージョン管理には含めず、アプリがディスクから読み込む場合はデプロイ用の .zip には含めてください。

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 のマネージドデータベースにデータベースを移行します。アプリの隣にデータベースをホストすることで、IP 許可リストの問題自体がなくなり、ほぼゼロレイテンシーになります。

接続タイムアウトと ECONNREFUSED

意味: データベースへの接続を試みた際、アプリがタイムアウトするまでハングするか、ECONNREFUSED で即座に失敗します。 目安となる発生理由:
  • タイムアウト(接続がハングし、即座には拒否されない)は、通常、接続先データベースのファイアウォールや IP 許可リストが接続をブロックしていることを意味します。多くの外部プロバイダーはデフォルトでデータセンター/海外の IP をブロックします。
  • 即座に ECONNREFUSED や「authentication failed」になる場合は、通常、ホスト/ポートには到達できているものの、認証情報、データベース名、またはポート番号が誤っていることを意味します。
修正方法:
  1. (Square Cloud のマネージドデータベースではなく)外部プロバイダーに接続する場合は、接続先のファイアウォールで Square Cloud の ASN(39839526548)を許可してください。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-redissocket: { tls: true, ca: fs.readFileSync("certificate.pem") } も受け付けます。Python の redis ライブラリは ssl_ca_certs/ssl_certfile/ssl_keyfile を受け取ります(ダッシュボードからダウンロードした結合済みの certificate.pem はいずれにも使えます)。
  • Drizzle ORM(Postgres): 標準の pgPoolssl: { ca, cert, key } を設定します。すべて結合済みの certificate.pem から fs.readFileSync で読み込み、drizzle.config.ts でも同じ ssl オブジェクトを使用します。
  • JDBC(Java): クライアント鍵を PK8/DER 形式に変換し、JDBC URL の SSL プロパティで参照する必要があります。
修正方法: ダッシュボードのデータベースのページから証明書を再ダウンロードし(古い、または不完全な証明書ファイルはよくある原因です)、接続文字列がお使いのエンジンに対応した TLS 対応のプロトコル/スキームを使用していることを確認し、作成したばかりの場合はデータベースを再起動してください。 マネージドデータベースをゼロから作成・接続する方法については、データベースを参照してください。
上記のいずれにも一致しないエラーメッセージの場合は、サポートチームが正確な接続失敗の原因を診断します。

お問い合わせ

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