> ## 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.

# Errori di connessione al database su Square Cloud: MySQL Host Not Allowed, MongoNetworkError, SSL

> Risolvi Host is not allowed to connect to this MySQL server, MongoNetworkError, MongoDB Atlas IP whitelist failures, connection timeout, ECONNREFUSED ed errori di connessione SSL/TLS su Square Cloud.

La maggior parte dei fallimenti di connessione al database su Square Cloud si riconducono a una di queste tre cause: un certificato SSL mancante, una allowlist IP che non tiene conto di un IP dinamico, oppure credenziali errate. Trova la corrispondenza con l'errore esatto qui sotto.

## "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:**

1. Apri il database nella dashboard di Square Cloud e scarica i file del certificato (CA, cert, key, di solito 2-3 campi).
2. 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`:
     ```bash theme={null}
     openssl pkcs12 -export -out client.p12 -inkey client.key -in client.crt
     ```
     Poi imposta:
     ```
     DATABASE_URL=mysql://USER:PASSWORD@HOST:PORT/DB?sslidentity=./client.p12&sslpassword=PASSWORD
     ```
     Includi `client.p12` all'interno dello `.zip` dell'app e imposta `DATABASE_URL` nelle Variabili d'ambiente della dashboard.
3. Verifica che username e password corrispondano a quanto mostrato nella dashboard, e riavvia il database se il certificato è stato appena generato.

<Warning>Non fare mai commit di `certificate.pem` o `client.p12` in un repository pubblico, tienilo fuori dal controllo di versione, ma includilo nello `.zip` di deploy quando la tua app lo legge dal disco.</Warning>

## 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 con `MongoNetworkError: 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:**

1. **Consigliato se ti serve Atlas esterno:** in Atlas → Network Access, aggiungi `0.0.0.0/0` per 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).
2. **Consigliato in generale:** sposta il database su un [database gestito da Square Cloud](/it/services/databases) 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 con `ECONNREFUSED`, 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.

**Come risolvere:**

1. Se ti connetti a un provider esterno (non un database gestito da Square Cloud), consenti gli ASN di Square Cloud sul firewall di destinazione: `398395` e `26548`. Dove è supportata solo la allowlist basata su IP (come MongoDB Atlas), usa invece `0.0.0.0/0` con credenziali forti, dato che l'IP di origine è dinamico.
2. Ricontrolla host, porta, username e password rispetto a quanto mostrato dal provider o dalla dashboard di Square Cloud.
3. Codifica con URL encoding qualsiasi carattere speciale nella connection string (`@`, `:`, `/`, ecc. all'interno di una password comprometteranno il parsing se lasciati non codificati).
4. 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), mai `redis://`. Forma: `rediss://default:PASSWORD@HOST:PORT`. `node-redis` accetta anche `socket: { tls: true, ca: fs.readFileSync("certificate.pem") }`; la libreria Python `redis` accetta `ssl_ca_certs`/`ssl_certfile`/`ssl_keyfile` (il `certificate.pem` combinato scaricato dalla dashboard funziona per tutti).
* **Drizzle ORM (Postgres):** un `Pool` `pg` standard con `ssl: { ca, cert, key }`, tutti caricati tramite `fs.readFileSync` dal `certificate.pem` combinato, e lo stesso oggetto `ssl` in `drizzle.config.ts`.
* **JDBC (Java):** la chiave del client deve essere convertita nel formato PK8/DER e referenziata nelle proprietà SSL dell'URL JDBC.

**Come risolvere:** riscarica il certificato dalla pagina del database nella dashboard (un file certificato vecchio o parziale è una causa comune), conferma che la connection string usi il protocollo/schema abilitato a TLS per il tuo motore, e riavvia il database se lo hai appena creato.

Per creare e connetterti a un database gestito da zero, consulta [Database](/it/services/databases).

<Tip>Se il messaggio di errore non corrisponde a nulla di quanto sopra, il nostro team di supporto può aiutarti a diagnosticare il fallimento di connessione esatto.</Tip>

## Contattaci

Se continui a riscontrare **difficoltà tecniche**, il nostro **team di supporto specializzato** è disponibile ad assisterti. [**Contattaci**](https://squarecloud.app/it/support) e saremo felici di aiutarti a risolvere qualsiasi problema — la qualità del supporto è una parte importante del motivo per cui gli sviluppatori valutano Square Cloud [**4,9/5 su 402 recensioni**](https://www.trustpilot.com/review/squarecloud.app) su Google e Trustpilot.
