Accediendo mysql (host) desde un contenedor

Christian Altamirano Ayala
Docker Everywhere
Published in
1 min readJun 7, 2019

Hace poco tuve un problema de conexión a mi base de datos mysql local desde un container también en el local. Al principio pense que se trataba que faltaba alguna configuración de red en docker pero resulta que la configuracion por defecto de red de los contenedores docker es en modo “bridge” (esto permite que dentro de cada contenedor se pueda acceder a internet).

Para sacarme de dudas use una imagen busybox y realize un ping a la IP de mi maquina host y resulta que efectivamente habia conexion.

Por lo que averiguando pude notar que la configuración por defecto de mysql permite solo conexiones locales (127.0.0.1), ya que los contenedores son asignados en otro rango de red (el mio esta en el rango de 172.17.0.0)esta conexion no se podia realizar

La solución fue habilitar la conexión externa en mysql cambiando la propiedad bind-address (archivo /etc/mysql/mysql.conf.d)

bind-address = 0.0.0.0

Además de eso fue necesario crear un usuario de mysql con los permisos necesarios y que pueda conectarse desde cualquier dominio o red

CREATE USER ‘newuser’@’%’ IDENTIFIED BY ‘user_password’;

Una vez hecha esa configuracion el contenedor pudo establecer conexion con la base de datos mysql del host.

--

--