Docker MYSQL '[2002] Verbindung abgelehnt'

Der Fehler '[2002] Connection refused' in Docker, wenn versucht wird, einen MySQL-Container zu verbinden, deutet in der Regel darauf hin, dass der MySQL-Server entweder nicht läuft oder nicht im Netzwerk erreichbar ist. Hier sind einige Dinge, die Sie überprüfen sollten, wenn Sie diesen Fehler erhalten:

  1. Stellen Sie sicher, dass der MySQL-Container mit dem Befehl "docker ps" läuft. Wenn er nicht läuft, starten Sie ihn mit "docker start <container_name>".

  2. Überprüfen Sie, ob der MySQL-Dienst innerhalb des Containers mit "docker exec -it <container_name> mysql -u root -p" läuft. Es wird nach dem Passwort gefragt und Sie können den Dienststatus überprüfen.

  3. Überprüfen Sie, ob die in der Konfiguration Ihrer Anwendung angegebenen Host- und Port-Angaben korrekt sind. Standardmäßig hört MySQL auf Port 3306, stellen Sie also sicher, dass Ihre Anwendung so konfiguriert ist, dass sie auf diesen Port verbindet.

  4. Wenn Sie den MySQL-Container und Ihre Anwendung auf verschiedenen Hosts oder in verschiedenen Netzwerken ausführen, stellen Sie sicher, dass der in der Konfiguration Ihrer Anwendung angegebene Host von der Anwendung aus erreichbar ist.

  5. Überprüfen Sie Ihre mysql-Container-IP mit dem Befehl "docker inspect <container_name>". Sie können das Netzwerk auch mit dem Befehl "docker network ls" überprüfen.

Beispiel:

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
docker run --name some-app --link some-mysql:mysql -d app-that-uses-mysql

Im obigen Beispiel kann der Container "some-app" mit dem MySQL-Server unter Verwendung des Hostnamens "mysql" und des standardmäßigen MySQL-Ports (3306) verbinden und sich mit dem Root-Benutzer und dem in der Umgebungsvariable "MYSQL_ROOT_PASSWORD" angegebenen Passwort authentifizieren.

Hinweis: In dem obigen Beispielbefehl, 'tag' ist die Version von mysql die Sie verwenden möchten.