So sieht die Meldung aus
ERROR 2003 (HY000): Can't connect to MySQL server on 'db.example.com' (10061)Häufige Ursachen
- Der Datenbankdienst läuft nicht oder ist abgestürzt, etwa nach einem Update oder OOM-Kill.
bind-address = 127.0.0.1in der Konfiguration: Der Server nimmt nur lokale Verbindungen an.- Falscher Port oder falscher Hostname, oder der Client verbindet per Socket statt per TCP.
skip-networkingist gesetzt, dann gibt es gar keinen TCP-Listener.- Eine Firewall oder Security Group blockt Port 3306, oft nur für die neue Client-IP.
Prüfen
- Läuft der Dienst?
systemctl status mariadb --no-pager | head -n 5 - Auf welcher Adresse und welchem Port lauscht er?
ss -lntp | grep 3306 - Port vom Client aus testen
nc -vz db.example.com 3306 - bind-address und skip-networking prüfen
grep -rE '^(bind-address|skip-networking|port)' /etc/mysql/
Lösung
- Dienst starten und ins Journal sehen, warum er ausgefallen ist. Ein Neustart ohne Ursache hält nur bis zum nächsten Mal.
- Für externe Clients
bind-address = 0.0.0.0oder die konkrete Interface-IP setzen und neu starten. Das öffnet den Port bewusst. - Firewall nur für die Client-IP freigeben, nicht für alle Netze.
- Bei 10061 auf Windows ist es meist die Windows-Firewall oder ein nicht laufender Dienst; 10060 ist dagegen ein Timeout, also eine falsche IP oder ein blockierender Filter.
Häufige Fragen
Was ist der Unterschied zwischen 2002 und 2003?
2002 betrifft den lokalen Socket, 2003 die TCP-Verbindung zum Host.
10061 oder 10060 – was sagt das?
10061 heißt Verbindung abgelehnt, also kein Listener. 10060 ist ein Timeout, also Firewall oder falsche Adresse.