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, 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 o 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:

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
Dall’output puoi capire se MySQL/MariaDB è in esecuzione.

Se MySQL/MariaDB non è in esecuzione, vedrai solo il tuo comando grep elencato.

Avvia MySQL/MariaDB con i seguenti comandi:

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

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:

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:

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

Social Buy Button
Trasforma i tuoi follower in clienti
  • Inizia a vendere sui social media in poco tempo
  • Vendi prodotti materiali o servizi
  • Gestisci tutte le attività da un'unica piattaforma

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:

mysql -u root -p

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

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:

mysql -u root -p

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

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:

mysql -u root -p

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

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ì:

+-------------------------------------------------------------+
| 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:

+--------------------------------------------+
| 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:

<?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 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:

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

Se il firewall blocca la porta, puoi sbloccarla specificamente:

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

Hai trovato questo articolo utile?
Vai al menu principale