”Host ‘X’ is not allowed to connect to this MySQL server”
Was es bedeutet: der MySQL-Client lehnt die Verbindung mit genau dieser Meldung ab. Warum es passiert: die von Square Cloud gehosteten Datenbanken erfordern SSL für jede Verbindung. Diese Meldung erscheint, wenn die Verbindung ohne geladenes Zertifikat versucht wird, nicht wegen einer Firewall/Host-Allowlist, wie die Meldung suggeriert. So behebst du es:- Öffne die Datenbank im Square Cloud Dashboard und lade die Zertifikatsdateien herunter (CA, Cert, Key, meist 2-3 Felder).
- Lade sie in der SSL/TLS-Konfiguration deines Clients:
- GUI-Clients (MySQL Workbench, DBeaver, HeidiSQL): konfiguriere die heruntergeladenen Zertifikatsdateien im SSL-Tab des Clients und verbinde dich dann mit dem im Dashboard angezeigten Host/Port/Benutzer/Passwort.
- Code (Prisma ORM): wandle das Client-Zertifikat+Schlüssel in eine
.p12um:Setze dann:Liefereclient.p12in der ZIP-Datei der App mit aus, setzeDATABASE_URLin den Umgebungsvariablen der Anwendung und starte die Anwendung dann neu.
- Überprüfe, ob Benutzername und Passwort mit den im Dashboard angezeigten übereinstimmen, und starte die Datenbank neu, falls das Zertifikat gerade erst generiert wurde.
MongoNetworkError und MongoDB Atlas IP-Whitelist-Fehler
Was es bedeutet: ein extern gehosteter MongoDB-Atlas-Cluster (keine von Square Cloud verwaltete Datenbank) lehnt die Verbindung mitMongoNetworkError: connection ... closed ab, obwohl die Zugangsdaten korrekt sind.
Warum es passiert: Anwendungscontainer von Square Cloud verwenden eine dynamische IPv4-Adresse, die sich bei jedem Neustart ändert. Eine MongoDB-Atlas-IP-Allowlist, die für eine einzelne statische IP konfiguriert ist, funktioniert bis zum nächsten Neustart und bricht dann stillschweigend ab.
So behebst du es, wähle eine Option:
- Empfohlen, wenn du externes Atlas benötigst: füge in Atlas → Network Access
0.0.0.0/0hinzu, um Verbindungen von jeder IP zuzulassen, und kompensiere die weitere Allowlist mit starken Zugangsdaten (langes zufälliges Passwort, dedizierter Datenbankbenutzer, Connection String nur in Umgebungsvariablen). Siehe auch MongoDB Atlas mit dynamischer IP. - Insgesamt empfohlen: verschiebe die Datenbank stattdessen zu einer von Square Cloud verwalteten Datenbank anstelle eines externen Atlas-Clusters. Das Hosting der Datenbank neben der App beseitigt das IP-Allowlist-Problem vollständig und bietet nahezu keine Latenz.
Verbindungs-Timeout und ECONNREFUSED
Was es bedeutet: die App hängt, bis sie in ein Timeout läuft, oder schlägt sofort mitECONNREFUSED fehl, wenn sie versucht, eine Datenbank zu erreichen.
Warum es als Faustregel passiert:
- Ein Timeout (die Verbindung hängt, keine sofortige Ablehnung) bedeutet meist, dass eine Firewall oder IP-Allowlist auf der Zieldatenbank die Verbindung blockiert. Viele externe Anbieter blockieren Rechenzentrums-/ausländische IPs standardmäßig.
- Ein sofortiges ECONNREFUSED oder “authentication failed” bedeutet meist, dass Host/Port erreichbar sind, aber die Zugangsdaten, der Datenbankname oder die Portnummer falsch sind.
- Wenn du dich mit einem externen Anbieter verbindest (keine von Square Cloud verwaltete Datenbank), erlaube die ASNs von Square Cloud in der Ziel-Firewall:
398395und26548. Wo nur IP-basierte Allowlists unterstützt werden (wie bei MongoDB Atlas), verwende stattdessen0.0.0.0/0mit starken Zugangsdaten, da die Quell-IP dynamisch ist. - Vergleiche Host, Port, Benutzername und Passwort noch einmal mit dem, was der Anbieter oder das Square Cloud Dashboard anzeigt.
- URL-encode alle Sonderzeichen im Connection String (
@,:,/usw. in einem Passwort führen unverändert zu Parsing-Fehlern). - Prüfe, ob der Treiber des Anbieters einen expliziten Parameter
ssl=true(oder ähnlich) im Connection String erfordert.
SSL/TLS-Verbindungsfehler
Was es bedeutet: der Client kann keinen TLS-Handshake mit der Datenbank herstellen, oder schlägt direkt danach mit einem wie Authentifizierung aussehenden Fehler fehl, der tatsächlich ein Zertifikatsproblem ist. Warum es passiert: von Square Cloud verwaltete Datenbanken erfordern SSL bei jeder Verbindung. Jede Datenbank-Engine erwartet das Zertifikat in einer leicht anderen Form:- Redis: das Protokoll muss
rediss://sein (mit zwei s), niemalsredis://. Form:rediss://default:PASSWORD@HOST:PORT.node-redisakzeptiert auchsocket: { tls: true, ca: fs.readFileSync("certificate.pem") }; Pythonsredis-Bibliothek nimmtssl_ca_certs/ssl_certfile/ssl_keyfile(das kombinierte, aus dem Dashboard heruntergeladenecertificate.pemfunktioniert für alle davon). - Drizzle ORM (Postgres): ein Standard-
pg-Poolmitssl: { ca, cert, key }, alle überfs.readFileSyncaus dem kombiniertencertificate.pemgeladen, und dasselbessl-Objekt indrizzle.config.ts. - JDBC (Java): der Client-Schlüssel muss in das Format PK8/DER konvertiert und in den SSL-Eigenschaften der JDBC-URL referenziert werden.
Weiterführende Anleitungen
- Verwaltete Datenbank erstellen und verbinden: die vollständige Einrichtung mit Verbindungsbeispielen.
- Datenbanken: Engines, Versionen und was jeder Plan enthält.
- Umgebungsvariablen: den Connection String aus deinem Code heraushalten.
- Verbindungsprobleme, Firewalls und IP-Sperren im Hilfe-Center.

