Come appare il messaggio
ERROR 2003 (HY000): Can't connect to MySQL server on 'db.example.com' (10061)Cause frequenti
- Il servizio database non è attivo o è andato in crash, per esempio dopo un aggiornamento o un OOM kill.
bind-address = 127.0.0.1nella configurazione: le connessioni remote vengono rifiutate.- Porta o hostname sbagliati, oppure il client usa il socket invece del TCP.
- C'è
skip-networking, quindi non esiste alcun listener TCP. - Un firewall o una security group blocca la porta 3306, magari solo per il nuovo IP del client.
Verifica
- Il servizio è attivo?
systemctl status mariadb --no-pager | head -n 5 - Su quale indirizzo e porta ascolta?
ss -lntp | grep 3306 - Testa la porta dal client
nc -vz db.example.com 3306 - Controlla bind-address e skip-networking
grep -rE '^(bind-address|skip-networking|port)' /etc/mysql/
Soluzione
- Avvia il servizio e leggi il journal per capire perché si è fermato. Un riavvio senza causa compra solo tempo.
- Per i client remoti imposta
bind-address = 0.0.0.0o l'IP dell'interfaccia e riavvia. Questo apre la porta, fallo consapevolmente. - Apri il firewall solo per l'IP del client, non per intere reti.
- Su Windows 10061 è di solito il firewall o il servizio fermo; 10060 è un timeout, quindi indirizzo sbagliato o filtro che scarta.
Domande frequenti
Che differenza c'è tra 2002 e 2003?
2002 riguarda il socket locale, 2003 la connessione TCP verso un host.
10061 o 10060?
10061 è connessione rifiutata, quindi nessun listener. 10060 è un timeout, quindi firewall o indirizzo errato.