Heim >Datenbank >MySQL-Tutorial >Wie verbinde ich mich von meinem Host-Computer aus mit einem Docker-MySQL-Container?
Problem:
Herstellen einer Verbindung zu einer darin ausgeführten MySQL-Instanz Ein Docker-Container vom Hostsystem erweist sich als nicht erfolgreich, was zu einem Fehler führt 2002.
Details zur Docker-Datei:
Die verwendete Docker-Datei umfasst die folgende Konfiguration:
FROM ubuntu:14.04.3 RUN apt-get update && apt-get install -y mysql-server RUN grep -v bind-address /etc/mysql/my.cnf > temp.txt && mv temp.txt /etc/mysql/my.cnf EXPOSE 3306 CMD /etc/init.d/mysql start && tail -F /var/log/mysql.log
Während das Image ohne Probleme initialisiert wird, wird versucht, eine Verbindung herzustellen vom Host mit dem Befehl mysql -P 12345 -uroot führen zu dem oben genannten Ergebnis Fehler.
Lösung:
Verbindungsspezifikation:
Um eine Verbindung zur MySQL-Instanz innerhalb des Docker-Containers herzustellen, ist dies der Fall notwendig, um beim Aufruf des MySQL-Befehls vom Host aus die richtigen Parameter anzugeben:
mysql -h localhost -P 3306 --protocol=tcp -u root
Hier -h localhost gibt den Host an, -P 3306 bezeichnet den Port (in diesem Fall 12345) und --protocol=tcp gibt an, dass die Verbindung über TCP/IP und nicht über eine Socket-Verbindung hergestellt werden soll.
Socket-Einschränkungen:
Innerhalb des Docker-Containers bindet MySQL an alle Netzwerkschnittstellen, mit Ausnahme von localhost. Da das Host-System nicht auf den Socket zugreifen kann, ist für die Kommunikation unbedingt TCP/IP zu verwenden. Durch die Angabe von --protocol=tcp im MySQL-Befehl wird die Verbindung erfolgreich über Port 3306 hergestellt.
Das obige ist der detaillierte Inhalt vonWie verbinde ich mich von meinem Host-Computer aus mit einem Docker-MySQL-Container?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!