Saltar al contenido

¿Cómo puedo acceder a mi docker maria db?

Pudiera darse el caso de que halles algún problema en tu código o proyecto, recuerda probar siempre en un ambiente de testing antes subir el código al trabajo final.

Solución:

Solo mysql-client, sin contenedor docker adicional

Instale el cliente mysql en su host,

apt-get install mysql-client

luego use el siguiente comando para acceder a su contenedor de base de datos.

mysql -u -p -h $(docker inspect --format ' .NetworkSettings.IPAddress ' )

El comando obtendrá automáticamente la IP de su contenedor docker.

Asegúrese de reemplazar , y con sus respectivos valores. En tu caso:

mysql -uroot -ptest -h $(docker inspect --format ' .NetworkSettings.IPAddress ' db)

Su comando permite que mariadb se ejecute en el puerto estándar 3306. De lo contrario, debe indicarle al comando mysql el nuevo puerto.

del sitio web oficial de Mariadb:

Conexión a MariaDB desde fuera del contenedor

Si intentamos conectarnos al servidor MariaDB en localhost, el cliente omitirá la red e intentará conectarse al servidor utilizando un archivo de socket en el sistema de archivos local. Sin embargo, esto no funciona cuando MariaDB se ejecuta dentro de un contenedor porque el sistema de archivos del servidor está aislado del host. El cliente no puede acceder al archivo de socket que está dentro del contenedor, por lo que no se puede conectar.

Por lo tanto, las conexiones al servidor MariaDB deben realizarse mediante TCP, incluso cuando el cliente se ejecuta en la misma máquina que el contenedor del servidor.

La mayoría de las imágenes de MariaDB, incluida la oficial, tienen conexiones TCP externas deshabilitadas mediante la opción de dirección de enlace en su archivo #my.cnf#. La imagen de la ventana acoplable utilizada en esta guía se basa en Ubuntu, por lo que el archivo se encuentra en /etc/mysql/my.cnf.

Para usar MariaDB necesitaremos editar el archivo de configuración para cambiar la opción apropiada y luego reiniciar el contenedor.

Dentro del contenedor, edite el archivo my.cnf y busque la línea que comienza con bind-address. Ponga un hash al comienzo de la línea para comentarlo:

#bind-address            = 127.0.0.1

Guarda el archivo.

Mientras aún está dentro del contenedor, envíe el comando de apagado a MariaDB. Esto apagará el servidor y también volverá a salir al host:

mysqladmin -u root -p shutdown

Inicie el contenedor de nuevo. Esta vez, el servidor MariaDB tendrá la red habilitada:

docker start mariadbtest

Encuentre la dirección IP que se ha asignado al contenedor:

docker inspect -f 'range .NetworkSettings.Networks.IPAddressend' mariadbtest

Ahora puede conectarse al servidor MariaDB utilizando una conexión TCP a esa dirección IP.

Forzar una conexión TCP

Después de habilitar las conexiones de red en MariaDB como se describe anteriormente, podremos conectarnos al servidor desde fuera del contenedor.

En el host, ejecute el cliente y establezca la dirección del servidor (“-h”) en la dirección IP del contenedor que encontró en el paso anterior:

mysql -h 172.17.0.2 -u root -p

Esta forma simple de conexión debería funcionar en la mayoría de las situaciones. Dependiendo de su configuración, también puede ser necesario especificar el puerto para el servidor o forzar el modo TCP:

mysql -h 172.17.0.2 -P 3306 --protocol=TCP -u root -p

Configuración de puertos para contenedores en clúster y replicación

Múltiples servidores MariaDB que se ejecutan en contenedores Docker separados pueden conectarse entre sí mediante TCP. Esto es útil para formar un clúster de Galera o para la replicación.

Al ejecutar un clúster o una configuración de replicación a través de Docker, querremos que los contenedores usen diferentes puertos. La forma más rápida de lograr esto es mapear los puertos de contenedores a diferentes puertos en nuestro sistema. Podemos hacer esto al crear los contenedores (comando docker run), usando la opción -p, varias veces si es necesario. Por ejemplo, para los nodos de Galera usaremos un mapeo similar a este:

-p 4306:3306 -p 5567:5567 -p 5444:5444 -p 5568:5568

Conéctese a MariaDB desde el cliente de línea de comandos de MySQL El siguiente comando inicia otra instancia de contenedor de mariadb y ejecuta el cliente de línea de comandos de mysql en su contenedor de mariadb original, lo que le permite ejecutar instrucciones SQL en su instancia de base de datos:

$ docker run -it --link some-mariadb:mysql --rm mariadb sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'

… donde some-mariadb es el nombre de su contenedor mariadb original.

Puede encontrar más información sobre el cliente de línea de comandos de MySQL en la documentación de MySQL

Consulte: https://hub.docker.com/_/mariadb/

Te mostramos reseñas y calificaciones

Si guardas alguna desconfianza y disposición de acrecentar nuestro enunciado te evocamos realizar una nota y con placer lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4.5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *