”Host ‘X’ is not allowed to connect to this MySQL server”
Cosa significa: il client MySQL rifiuta la connessione con questo identico messaggio. Perché accade: i database gestiti di Square Cloud richiedono SSL per ogni connessione. Questo errore appare quando la connessione viene tentata senza il certificato caricato, non a causa di un firewall/allowlist host come suggerisce il messaggio. Come risolvere:- Apri il database nella dashboard di Square Cloud e scarica i file del certificato (CA, cert, key, di solito 2-3 campi).
- Caricali nella configurazione SSL/TLS del tuo client:
- Client GUI (MySQL Workbench, DBeaver, HeidiSQL): configura i file del certificato scaricati nella scheda SSL del client, poi connettiti con host/porta/utente/password mostrati nella dashboard.
- Codice (Prisma ORM): converti il cert+key del client in un
.p12:Poi imposta:Includiclient.p12all’interno dello zip dell’app e impostaDATABASE_URLnelle variabili d’ambiente dell’applicazione, poi riavvia l’applicazione.
- Verifica che username e password corrispondano a quanto mostrato nella dashboard, e riavvia il database se il certificato è stato appena generato.
MongoNetworkError e fallimenti della whitelist IP di MongoDB Atlas
Cosa significa: un cluster MongoDB Atlas ospitato esternamente (non un database gestito da Square Cloud) rifiuta la connessione conMongoNetworkError: connection ... closed, anche se le credenziali sono corrette.
Perché accade: i container delle applicazioni di Square Cloud usano un indirizzo IPv4 dinamico che cambia a ogni riavvio. Una whitelist IP di MongoDB Atlas configurata per un singolo IP statico funzionerà fino al riavvio successivo, poi si interromperà silenziosamente.
Come risolvere, scegline uno:
- Consigliato se ti serve Atlas esterno: in Atlas → Network Access, aggiungi
0.0.0.0/0per consentire connessioni da qualsiasi IP, e compensa la allowlist più ampia con credenziali forti (password lunga e casuale, utente database dedicato, connection string mantenuta solo nelle variabili d’ambiente). Vedi anche MongoDB Atlas con un IP dinamico. - Consigliato in generale: sposta il database su un database gestito da Square Cloud invece di un cluster Atlas esterno. Ospitare il database accanto all’app elimina completamente il problema della allowlist IP e offre una latenza vicina allo zero.
Timeout di connessione ed ECONNREFUSED
Cosa significa: l’app resta in attesa fino al timeout, oppure fallisce immediatamente conECONNREFUSED, quando cerca di raggiungere un database.
Perché accade, come regola generale:
- Un timeout (la connessione resta in attesa, nessun rifiuto immediato) di solito significa che un firewall o una allowlist IP sul database di destinazione sta bloccando la connessione. Molti provider esterni bloccano per impostazione predefinita gli IP di datacenter/esteri.
- Un ECONNREFUSED immediato o un “authentication failed” di solito significa che host/porta sono raggiungibili ma le credenziali, il nome del database o il numero di porta sono sbagliati.
- Se ti connetti a un provider esterno (non un database gestito da Square Cloud), consenti gli ASN di Square Cloud sul firewall di destinazione:
398395e26548. Dove è supportata solo la allowlist basata su IP (come MongoDB Atlas), usa invece0.0.0.0/0con credenziali forti, dato che l’IP di origine è dinamico. - Ricontrolla host, porta, username e password rispetto a quanto mostrato dal provider o dalla dashboard di Square Cloud.
- Codifica con URL encoding qualsiasi carattere speciale nella connection string (
@,:,/, ecc. all’interno di una password comprometteranno il parsing se lasciati non codificati). - Verifica se il driver del provider richiede un parametro esplicito
ssl=true(o simile) nella connection string.
Errori di connessione SSL/TLS
Cosa significa: il client non riesce a stabilire un handshake TLS con il database, oppure fallisce subito dopo con un errore che sembra di autenticazione ma è in realtà un problema di certificato. Perché accade: i database gestiti di Square Cloud richiedono SSL per ogni connessione. Ogni motore di database si aspetta il certificato in una forma leggermente diversa:- Redis: il protocollo deve essere
rediss://(con due s), mairedis://. Forma:rediss://default:PASSWORD@HOST:PORT.node-redisaccetta anchesocket: { tls: true, ca: fs.readFileSync("certificate.pem") }; la libreria Pythonredisaccettassl_ca_certs/ssl_certfile/ssl_keyfile(ilcertificate.pemcombinato scaricato dalla dashboard funziona per tutti). - Drizzle ORM (Postgres): un
Poolpgstandard conssl: { ca, cert, key }, tutti caricati tramitefs.readFileSyncdalcertificate.pemcombinato, e lo stesso oggettosslindrizzle.config.ts. - JDBC (Java): la chiave del client deve essere convertita nel formato PK8/DER e referenziata nelle proprietà SSL dell’URL JDBC.
Guide correlate
- Creare e connettere un database gestito: la configurazione completa, con esempi di connessione.
- Database: motori, versioni e cosa include ogni piano.
- Variabili d’ambiente: tieni la connection string fuori dal codice.
- Problemi di connessione, firewall e blocchi IP nel centro assistenza.

