Tutoriales

Cómo configurar MySQL con Docker en Linux

Si es nuevo en MySQL o alguien que quiere instalar una base de datos MySQL rápida y fácilmente, este artículo es para usted. En este artículo, aprenderemos cómo configurar MySQL usando Docker y Docker compose en Linux.

Primero configuremos el entorno de la ventana acoplable para iniciar el contenedor MySQL.

1. Instale Docker

Antes de iniciar el contenedor de la ventana acoplable de MySQL, debe instalar la ventana acoplable y la ventana acoplable-compose en su máquina. Si no ha instalado docker y docker-compose, consulte la siguiente guía:

También puede consultar el enlace de la documentación oficial de Docker que se proporciona a continuación para aprender cómo configurar Docker y Docker compose.

Puede ejecutar el siguiente comando para verificar la versión de docker y docker-compose que está ejecutando.

$ docker --version
Docker version 20.10.11, build dea9396
$ docker-compose --version
docker-compose version 1.29.2, build unknown

2. Descarga la imagen de MySQL Docker

Ir a Docker Center obtener Imagen de MySQL DockerLo importante es que debes decidir qué versión de MySQL quieres ejecutar.

Ejecute el siguiente comando para extraer la imagen de MySQL desde el concentrador de la ventana acoplable a su máquina.

$ docker pull mysql:latest

Tener cuidado: No es necesario utilizar la etiqueta «latest«, la última imagen se extraerá de forma predeterminada.

Para verificar si la imagen está disponible localmente, puede ejecutar el siguiente comando:

$ docker images mysql

Salida de muestra:

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
mysql        latest    b05128b000dd   12 days ago   516MB

La imagen ahora está lista para iniciar el contenedor. También puede omitir este paso y ejecutar «docker run«Comando, como se muestra en la siguiente sección, si no está disponible localmente, extraerá la imagen.

3. Inicie el contenedor MySQL

Ejecute el siguiente comando para iniciar el contenedor de la ventana acoplable MySQL:

$ docker run --name mysql -p 3306:3306 -v mysql_volume:/var/lib/mysql/ -d -e "MYSQL_ROOT_PASSWORD=temp123" mysql
Inicie el contenedor MySQL

Analicemos los comandos anteriores y veamos qué hace cada bandera.

--name → Ponle un nombre a tu contenedor. Si no especifica esta marca, Docker asignará algunos nombres generados aleatoriamente.

-p → Mapeo de puertos. MySQL escuchará en el puerto 3306 Entonces estamos mapeando el puerto (33063306) Desde su host al contenedor de la ventana acoplable.El puerto de host no es necesario 3306, Puede ser cualquier cosa que se pueda utilizar.

Ejecute lo siguiente netstat Después de iniciar el contenedor, use el comando en la computadora local para verificar si el puerto asignado está escuchando.

$ netstat -tlnup | grep -i 3306

Salida de muestra:

tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      168870/docker-proxy 
tcp6       0      0 :::3306                 :::*                    LISTEN      168878/docker-proxy 

-v → Adjuntar el volumen al recipiente. El comportamiento predeterminado de la ventana acoplable es no conservar los datos una vez que se elimina el contenedor, por lo que perderá todos los datos.

Para crear almacenamiento persistente, creé un volumen llamado «mysql_volume«. MySQL almacena datos en /var/lib/mysql/ Dentro del contenedor, se asigna al directorio localhost /var/lib/docker/volumes/mysql_volume1/_data, Por lo que sus datos serán persistentes.

Si desea obtener más información sobre los volúmenes de la ventana acoplable, consulte nuestros detalles. artículo Lo mismo que arriba.

-d → El contenedor se iniciará y operará en modo separado.Si se omite -d Firme, y luego verá el registro de inicio del contenedor en la terminal, y debe abrir una nueva sesión de terminal para conectarse al contenedor.

-e → Variables de entorno.usted debe Establecer la contraseña de usuario root de mysql Utilice cualquiera de los siguientes parámetros.

  • MYSQL_ROOT_PASSWORD → Utilice esta variable de entorno para establecer su propia contraseña.
  • MYSQL_ALLOW_EMPTY_PASSWORD → Se establecerá una contraseña en blanco o vacía.Tienes que configurar MYSQL_ALLOW_EMPTY_PASSWORD=1.
  • MYSQL_RANDOM_ROOT_PASSWORD → Se generará una contraseña aleatoria cuando se inicie el contenedor.Tienes que configurar MYSQL_RANDOM_ROOT_PASSWORD=1 Genera una contraseña aleatoria.

Si omite este paso, se producirá el error que se muestra a continuación.

Error de variable ambiental
Error de variable ambiental

4. Verifique el estado del contenedor MySQL

Puede verificar el estado del contenedor iniciado con el siguiente comando:

$ docker ps

Salida de muestra:

CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
e1fb895f6f0f   mysql     "docker-entrypoint.s..."   3 minutes ago   Up 3 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

5. Conéctese a la base de datos MySQL

Ejecute el siguiente comando para conectarse al contenedor MySQL.

$ docker exec -it mysql bash

Conéctese a la base de datos MySQL como root Usuario ejecutando el siguiente comando.En mi caso, he configurado mi propia contraseña de la siguiente manera MYSQL_ROOT_PASSWORD.

$ mysql -u root -p
Conectarse a la base de datos
Conectarse a la base de datos

Si ha usado MYSQL_RANDOM_ROOT_PASSWORD=1 Cuando inicia el contenedor, puede obtener la contraseña generada automáticamente del registro.

$ docker logs
$ docker logs mysql
Contraseña de root generada
Contraseña de root generada

La contraseña de root generada automáticamente será muy larga y no es necesario recordarla. Puede restablecer la contraseña de root ejecutando la siguiente consulta.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysqlpassword';

Reemplace la contraseña «mysqlpassword» con su propia contraseña. También puede crear su propio usuario y otorgarle los permisos necesarios.

6. Cargar datos de muestra

El propósito principal de configurar mysql es cargar algunos datos y ejecutar consultas en ellos. Hay varias formas de cargar datos.Tengo un archivo de muestra llamado «load_data.sql«Contiene la siguiente consulta.

CREATE DATABASE IF NOT EXISTS football;

USE football;

CREATE TABLE IF NOT EXISTS players (
    player_name     VARCHAR(16)     NOT NULL,
    player_age      INT             NOT NULL,
    player_club     VARCHAR(16)     NOT NULL,
    player_country  VARCHAR(16)     NOT NULL
);

INSERT INTO players VALUES ("Messi",34,"PSG","Argentina");
INSERT INTO players VALUES ("Ronaldo",36,"MANU","Portugal");
INSERT INTO players VALUES ("Neymar",29,"PSG","Brazil");
INSERT INTO players VALUES ("Kane",28,"SPURS","England");
INSERT INTO players VALUES ("E Hazard",30,"MADRID","Belgium");

El primer método es utilizar «docker cp» Pedido.

$ docker cp load_data.sql mysql:/tmp
$ docker exec -it mysql bash
$ ls -l /tmp/

Ahora puede conectarse al cliente mysql y ejecutar el comando de origen o redirigir archivos al cliente mysql.

$ mysql -u root -p
mysql> source /tmp/load_data.sql

o

$ mysql -u root -p < /tmp/load_data.sql

Conéctese a la base de datos y consulte su tabla.

$ mysql -u root -p
mysql> show databases;
mysql> use football;
mysql> show tables;
mysql> select * from players;
Mesa de jugador
Mesa de jugador

El segundo método es redireccionar .sql Al ejecutar el archivo docker exec Pedido.

$ docker exec -i mysql mysql -u root -p < load_data.sql

7. Use Docker-Compose para configurar un contenedor MySQL

En lugar de tirar de la imagen y correr docker run Comando, puedes usar docker-compose Gire el recipiente rápidamente. Docker-compose es más adecuado cuando desea crear varios contenedores.

Crea un archivo llamado docker-compose.yml o docker-compose.yaml documento. Copie y pegue el siguiente código yaml. Este es el mismo que ejecuté manualmente en las secciones anteriores.

version: '3.8'
services:
  database:
    image: mysql:latest
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: temp1234
    ports:
      - "3306:3306"
    volumes:
      - mysql_volume:/var/lib/mysql
volumes:
  mysql_compose_volume:

Ahora ejecute el siguiente comando, que iniciará el contenedor de la ventana acoplable MySQL.

$ docker-compose up
Inicie el contenedor MySQL con Docker Compose
Inicie el contenedor MySQL con Docker Compose

Ejecute el siguiente comando para usar docker-compose para verificar el estado del contenedor iniciado:

$ docker-compose ps

Salida de muestra:

Name              Command             State                          Ports                       
-------------------------------------------------------------------------------------------------
mysql   docker-entrypoint.sh mysqld   Up      0.0.0.0:3306->3306/tcp,:::3306->3306/tcp, 33060/tcp

8. Utilice MySQL Workbench para conectarse a la base de datos MySQL

Hasta ahora, hemos visto cómo conectarse a la base de datos usando el cliente mysql desde dentro del contenedor. También puede utilizar cualquier cliente GUI (como mysql workbench, dbeaver, Heidi SQL, etc.) para conectarse a la base de datos.

Independientemente del cliente GUI que utilice, lo importante a lo que debe prestar atención es a qué puerto se asigna cuando inicia el contenedor.

En mi caso, he mapeado anfitrión local (3306) -> envase (3306).Entonces, si tengo que establecer una conexión a la base de datos, tengo que conectarme a localhost:3306 o 127.0.01:3306.

Utilizo MySQL Workbench como mi cliente GUI. Si no ha instalado MySQL Workbench en su máquina, puede utilizar las siguientes instrucciones para instalarlo.

8.1. Instalar MySQL Workbench en Linux

Navegar a Página web oficial Descargue el archivo del paquete.Debes seleccionar tu sistema operativo para descargar .deb o .rpm documento.

Elegir un sistema operativo para MySQL Workbench
Elegir un sistema operativo para MySQL Workbench

En el siguiente paso, le pedirá que inicie sesión o se registre. Puede omitir el inicio de sesión o el registro haciendo clic en la opción "No, gracias, simplemente inicie mi descarga".

Omitir las opciones de inicio de sesión o registro
Omitir las opciones de inicio de sesión o registro

En sistemas basados ​​en Debian, instale MySQL Workbench de la siguiente manera:

$ cd 
$ sudo apt install ./mysql-workbench-community_8.0.27-1ubuntu21.04_amd64.deb

En sistemas basados ​​en RHEL, instale MySQL Workbench de la siguiente manera:

$ cd 
$ sudo dnf localinstall ./mysql-workbench-community-8.0.27-1.el8.x86_64.rpm

Una vez completada la instalación, puede iniciar el banco de trabajo mysql desde el menú o el tablero.

Inicie el banco de trabajo MySQL

Inicie el banco de trabajo MySQL

8.2. Conectarse a la base de datos MySQL

Conéctese a la base de datos que se ejecuta en el contenedor de la ventana acoplable.Deberías intentar conectarte a localhost:3306 o localhost: Depende de cómo esté configurado su contenedor.

Administrar conexiones MySQL
Administrar conexiones MySQL

Antes de conectarse a la base de datos, puede presionar "Conexión de prueba"Para comprobar si MySQL Workbench puede conectarse correctamente a la instancia de la base de datos.

Prueba la conexión MySQL
Prueba la conexión MySQL

Ahora puede comenzar a ejecutar consultas en la tabla que creó.

Ejecute la consulta de muestra en MySQL Workbench
Ejecute la consulta de muestra en MySQL Workbench

9. Conclusión

En este artículo, aprendimos brevemente cómo usar Docker para iniciar un contenedor MySQL en Docker. docker run con docker-compose método. Si desea configurar MySQL con fines de prueba o aprendizaje, Docker es suficiente.

Espero que esto ayude.

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba