“Host ‘X’ is not allowed to connect to this MySQL server”
意味: MySQL クライアントがこのメッセージとともに接続を拒否します。 発生理由: Square Cloud のマネージドデータベースは、すべての接続で SSL が必須です。このエラーは、証明書を読み込まずに接続を試みた際に表示されるもので、メッセージが示唆するようなファイアウォール/ホスト許可リストが原因ではありません。 修正方法:- Square Cloud ダッシュボードでデータベースを開き、証明書ファイル(CA、cert、key。通常 2〜3 個のフィールド)をダウンロードします。
- クライアントの SSL/TLS 設定にそれらを読み込みます。
- GUI クライアント(MySQL Workbench、DBeaver、HeidiSQL): ダウンロードした証明書ファイルをクライアントの SSL タブに設定し、ダッシュボードに表示されているホスト/ポート/ユーザー/パスワードで接続します。
- コード(Prisma ORM): クライアント証明書と鍵を
.p12に変換します。続いて次のように設定します。client.p12をアプリの zip に含め、アプリケーションの環境変数でDATABASE_URLを設定してから、アプリケーションを再起動します。
- ユーザー名とパスワードがダッシュボードに表示されているものと一致していることを確認し、証明書を生成したばかりの場合はデータベースを再起動してください。
MongoNetworkError と MongoDB Atlas の IP 許可リストの失敗
意味: (Square Cloud のマネージドデータベースではなく)外部にホストされた MongoDB Atlas クラスターが、認証情報は正しいにもかかわらずMongoNetworkError: connection ... closed で接続を拒否します。
発生理由: Square Cloud のアプリケーションコンテナは、再起動のたびに変化する動的 IPv4 アドレスを使用します。単一の静的 IP 向けに設定された MongoDB Atlas の IP 許可リストは、次に再起動するまでは動作しますが、その後静かに壊れます。
修正方法(いずれかを選択):
- 外部の Atlas が必要な場合の推奨策: Atlas の Network Access で
0.0.0.0/0を追加し、任意の IP からの接続を許可します。許可リストを広げる代わりに、強力な認証情報(長くランダムなパスワード、専用のデータベースユーザー、環境変数にのみ保存する接続文字列)で補います。動的 IP での MongoDB Atlas の利用もあわせて参照してください。 - 全体としての推奨策: 外部の Atlas クラスターの代わりに、Square Cloud のマネージドデータベースにデータベースを移行します。アプリの隣にデータベースをホストすることで、IP 許可リストの問題自体がなくなり、ほぼゼロレイテンシーになります。
接続タイムアウトと ECONNREFUSED
意味: データベースへの接続を試みた際、アプリがタイムアウトするまでハングするか、ECONNREFUSED で即座に失敗します。
目安となる発生理由:
- タイムアウト(接続がハングし、即座には拒否されない)は、通常、接続先データベースのファイアウォールや IP 許可リストが接続をブロックしていることを意味します。多くの外部プロバイダーはデフォルトでデータセンター/海外の IP をブロックします。
- 即座に ECONNREFUSED や「authentication failed」になる場合は、通常、ホスト/ポートには到達できているものの、認証情報、データベース名、またはポート番号が誤っていることを意味します。
- (Square Cloud のマネージドデータベースではなく)外部プロバイダーに接続する場合は、接続先のファイアウォールで Square Cloud の ASN(
398395と26548)を許可してください。MongoDB Atlas のように IP ベースの許可リストしかサポートされない場合は、送信元 IP が動的であるため、代わりに強力な認証情報とともに0.0.0.0/0を使用してください。 - ホスト、ポート、ユーザー名、パスワードを、プロバイダーまたは Square Cloud ダッシュボードに表示されている値と再確認してください。
- 接続文字列内の特殊文字は URL エンコードしてください(パスワード内の
@、:、/などをそのままにするとパースが壊れます)。 - プロバイダーのドライバーが、接続文字列に明示的な
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 プロパティで参照する必要があります。
関連ガイド
- マネージドデータベースを作成して接続する: 接続例を含む完全なセットアップ。
- データベース: エンジン、バージョン、各プランに含まれるもの。
- 環境変数: 接続文字列をコードの外に保存します。
- ヘルプセンターの接続の問題、ファイアウォール、IP ブロック。

