Heim >Datenbank >MySQL-Tutorial >Wie verbinde ich mich von meinem Host-Computer aus mit einem Docker-MySQL-Container?

Wie verbinde ich mich von meinem Host-Computer aus mit einem Docker-MySQL-Container?

DDD
DDDOriginal
2024-12-02 12:01:10867Durchsuche

How Do I Connect to a Docker MySQL Container from My Host Machine?

Herstellen einer Verbindung zu einem Docker-MySQL-Container vom Host aus

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn