Maison >base de données >tutoriel mysql >Comment puis-je me connecter à un conteneur Docker MySQL depuis ma machine hôte ?

Comment puis-je me connecter à un conteneur Docker MySQL depuis ma machine hôte ?

DDD
DDDoriginal
2024-12-02 12:01:10931parcourir

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

Connexion à un conteneur Docker MySQL à partir de l'hôte

Problème :

Établissement d'une connexion à une instance MySQL exécutée dans un conteneur Docker du système hôte échoue, ce qui entraîne une erreur 2002.

Détails du Dockerfile :

Le Dockerfile utilisé inclut la configuration suivante :

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

Pendant que l'image s'initialise sans problème, tente de se connecter depuis l'hôte en utilisant la commande mysql -P 12345 -uroot résultat dans ce qui précède erreur.

Solution :

Spécification de connexion :

Pour se connecter à l'instance MySQL dans le conteneur Docker, il est nécessaire de fournir les paramètres corrects lors de l'appel de la commande mysql depuis l'hôte :

mysql -h localhost -P 3306 --protocol=tcp -u root

Ici, -h localhost spécifie l'hôte, -P 3306 désigne le port (dans ce cas, 12345), et --protocol=tcp indique que la connexion doit être établie via TCP/IP plutôt qu'une connexion socket.

Socket Limitations :

Dans le conteneur Docker, MySQL se lie à toutes les interfaces réseau, à l'exclusion de localhost. Puisque le système hôte ne peut pas accéder au socket, il est essentiel d’utiliser TCP/IP pour la communication. En spécifiant --protocol=tcp dans la commande mysql, la connexion s'établit avec succès via le port 3306.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn