# Correggere l’errore nello stabilire una connessione al database MySQL/MariaDB

L’errore “errore nello stabilire una connessione al database” si verifica quando MySQL o MariaDB non riescono a stabilire la connessione tra l’applicazione e il database. Solitamente, ciò è dovuto a dati di accesso errati, un server di database fermo o problemi di configurazione.

## Cosa si nasconde dietro il messaggio “errore nello stabilire una connessione al database”?

Il messaggio “errore nello stabilire una connessione al database” segnala che un’applicazione, come ad esempio un sito web [PHP](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/cose-php/), non è riuscita a stabilire una connessione con il database MySQL o MariaDB. Le cause comuni includono dati di accesso non validi, come un nome utente o una password errati, un server di database non attivo o impostazioni server errate. Anche problemi di rete, come porte bloccate o informazioni host sbagliate, possono generare l’errore. Nei sistemi di gestione dei contenuti come WordPress, l’errore viene mostrato direttamente quando il database non è raggiungibile. Spesso impedisce l’accesso all’intero sito web, poiché i contenuti non possono essere caricati o salvati.

## Come correggere l’errore di connessione al database su MySQL/MariaDB

Se non riesci a stabilire una connessione con il tuo database, le cause possono essere diverse. Verifica le soluzioni seguenti per capire perché la connessione fallisce nel tuo caso specifico.

### Soluzione 1: assicurati che MySQL/MariaDB sia in esecuzione

Se [MySQL](https://www.ionos.it/digitalguide/server/know-how/cose-mysql/) o [MariaDB](https://www.ionos.it/digitalguide/server/know-how/cose-mariadb/) non è più in esecuzione, gli script e i siti web non possono più connettersi. Su un server Linux, puoi vedere se MySQL è in esecuzione usando il comando:

```none
ps -aux | grep mysql
```

Questo restituisce un elenco dei processi in esecuzione che contengono “mysql” nel nome. L’elenco include il comando che hai appena eseguito. Se MySQL è in esecuzione, comprende anche il processo di MySQL.

[![Immagine: Processo MySQL](https://www.ionos.it/digitalguide/fileadmin/_processed_/b/e/csm_mysql-process_8b3cb86e4e.webp "Processo MySQL")](https://www.ionos.it/digitalguide/fileadmin/DigitalGuide/Screenshots_2025/mysql-process.jpg) Dall’output puoi capire se MySQL/MariaDB è in esecuzione. Se MySQL/MariaDB non è in esecuzione, vedrai solo il tuo [comando grep](https://www.ionos.it/digitalguide/server/configurazione/linux-comando-grep/) elencato.

Avvia MySQL/MariaDB con i seguenti comandi:

```none
# Ubuntu
systemctl start mysql
systemctl start mariadb
# CentOS
systemctl start mysqld
systemctl start mariadb
```

Assicurati di utilizzare il nome utente e la password corretti. Queste informazioni vengono impostate al momento della creazione del database MySQL. Inoltre, devi impostare correttamente il nome host.

### Soluzione 2: verifica la connessione al database

Una volta confermato che MySQL/MariaDB è in esecuzione, il passo successivo è connettersi dalla riga di comando con il comando:

```none
mysql -u root -p
```

Dovresti essere invitato a inserire la password dell’utente root. Per impostazione predefinita, la password per l’accesso root è la stessa della password originale di root per il tuo server.

N.B. Se cambi la password per l’utente root del server, la password per l’utente root di MySQL non verrà modificata.

Dopo aver inserito la password, dovresti trovarti nel client MySQL/MariaDB. Un client MySQL appare, ad esempio, in questo modo:

```none
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 9.4.0 Homebrew
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
```

Se riscontri problemi nello stabilire una connessione al database MySQL con un altro nome utente e password, esegui nuovamente questo test sostituendo root con l’altro nome utente.

### Soluzione 3: verifica il nome utente MySQL/MariaDB

Se inserisci le credenziali di accesso errate, riceverai un errore di connessione al database come questo:

```none
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
```

Assicurati che sia il nome utente che vedi nella richiesta che la password inserita siano scritti correttamente. Tieni presente che il nome utente distingue tra maiuscole e minuscole, quindi “Root” non è lo stesso di “root”.

Vale la pena quindi verificare se stai usando la giusta ortografia e distinzione tra maiuscole e minuscole per il nome utente. Per elencare tutti gli utenti di MySQL/MariaDB, accedi al client da riga di comando come root con il comando:

```none
mysql -u root -p
```

Successivamente, elenca tutti gli utenti MySQL e i loro host con il comando:

```none
select host, user from mysql.user;
```

In questo modo il nome utente verrà visualizzato esattamente come è stato creato. Inoltre, nella colonna host vedrai il luogo da cui l’utente è autorizzato a connettersi.

### Soluzione 4: reimposta la password MySQL/MariaDB dell’utente

N.B. In particolare, quando si reimposta la password dell’utente root, è necessario prestare attenzione. Quindi, fai molta attenzione quando segui i suggerimenti seguenti per evitare di eliminare accidentalmente una password sbagliata.

Se anche la scrittura del nome utente non è il problema, l’errore potrebbe dipendere da una password non valida. Per reimpostare la password MySQL/MariaDB di un utente, accedi al client della riga di comando come root usando il comando:

```none
mysql -u root -p
```

Successivamente, reimposta la password dell’utente corrispondente con il comando:

```none
ALTER USER 'myuser'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
```

Sostituisci `new_password` con la nuova password e `myuser` con il nome utente.

### Soluzione 5: assicurati che l’utente abbia le autorizzazioni corrette

Se hai la certezza che nome utente e password siano corretti, il problema potrebbe essere che l’utente non dispone delle giuste autorizzazioni (grants) per questo database.

Per verificare le autorizzazioni (grants) di un utente, accedi al client da riga di comando come root utilizzando il comando:

```none
mysql -u root -p
```

Successivamente, visualizza le autorizzazioni dell’utente con il comando:

```none
SHOW GRANTS FOR 'myuser'@'localhost';
```

Sostituisci `myuser` con il nome utente. Modifica eventualmente `localhost` con il nome host.

Dovresti ottenere un elenco dei privilegi che l’utente possiede per il rispettivo database. Dovrebbe apparire più o meno così:

```none
+-------------------------------------------------------------+
| Grants for myuser@localhost                                 |
+-------------------------------------------------------------+
| GRANT USAGE ON *.* TO `myuser`@`localhost`                  |
| GRANT ALL PRIVILEGES ON `reviews`.* TO `myuser`@`localhost` |
+-------------------------------------------------------------+
2 rows in set (0,004 sec)
```

Nota che questo utente ha tutte le autorizzazioni per un database chiamato `reviews`.

Se all’utente non sono stati assegnati permessi per un database, vedrai solo qualcosa del genere:

```none
+--------------------------------------------+
| Grants for myuser@localhost                |
+--------------------------------------------+
| GRANT USAGE ON *.* TO `myuser`@`localhost` |
+--------------------------------------------+
1 row in set (0,001 sec)
```

Nota che questo utente ha solo i permessi USAGE su “.” e non ha permessi per i database. Questo può causare l’errore di accesso.

### Soluzione 6: verifica la connessione al database dal web

Anche se MySQL o MariaDB funzionano in locale, possono comunque verificarsi problemi nell’ambiente web. Un semplice test dal browser aiuta a verificare esattamente questa connessione e a riconoscere tempestivamente possibili problemi di accesso. Utilizza un semplice script per testare se il tuo database accetta la connessione. Crea un file chiamato `database-connection-test.php` con il seguente contenuto:

```none
<?php
$test_connect = mysqli_connect('localhost', 'root', 'password');
 
if (!$test_connect) {
    die('Could not connect: ' . mysqli_connect_error());
}
echo 'Successful database connection.';
mysqli_close($test_connect);
mysql_close($test_connect);
?>
```

Sostituire la parola password con la password di root.

Posiziona questo file nella tua directory web e poi effettua l’accesso tramite un browser. Se riesci a connetterti con il nome utente e la password di root, allora sai che il tuo database accetta le connessioni.

Se hai problemi a stabilire una connessione MySQL/MariaDB con un altro nome utente e password, esegui questo test una seconda volta sostituendo root con l’altro nome utente e la password con la password corrispondente.

N.B. Assicurati di eliminare questo file una volta completati i tuoi test.

### Soluzione 7: verifica il firewall e le porte

Anche se MySQL o MariaDB funzionano correttamente e le credenziali di accesso sono giuste, un [firewall](https://www.ionos.it/digitalguide/server/sicurezza/cose-un-firewall/) può bloccare la connessione. Per impostazione predefinita, MySQL utilizza la porta 3306 per le connessioni in entrata. Verifica innanzitutto se la porta è aperta. Su un sistema Linux, puoi usare i seguenti comandi:

```none
sudo netstat -tulnp | grep 3306
# Sui sistemi con ufw (Ubuntu)
sudo ufw status
```

Se il firewall blocca la porta, puoi sbloccarla specificamente:

```none
# Ubuntu con ufw
sudo ufw allow 3306/tcp
sudo ufw reload
# CentOS o RHEL con firewalld
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
```

Assicurati di sbloccare la porta solo per gli indirizzi IP che necessitano realmente di accesso. Aprirla per tutti può rappresentare un rischio per la sicurezza. Dopo aver configurato correttamente il firewall, la tua applicazione dovrebbe essere nuovamente in grado di stabilire una connessione con il database MySQL/MariaDB. Verificalo nuovamente con lo script di test PHP o direttamente tramite la console.


This is a markdown version of: [https://www.ionos.it/digitalguide/server/know-how/errore-nello-stabilire-una-connessione-al-database-mysql-mariadb/](https://www.ionos.it/digitalguide/server/know-how/errore-nello-stabilire-una-connessione-al-database-mysql-mariadb/) for AI/LLM consumption.