GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Cómo configurar MySQL con Docker en Linux

Si es nuevo en MySQL o alguien que desea instalar una base de datos MySQL de forma rápida y sin esfuerzo, entonces este artículo es para usted. En este artículo, aprenderemos cómo configurar MySQL con Docker y Docker compose en Linux.

Comencemos configurando el entorno de la ventana acoplable para iniciar el contenedor MySQL.

1. Instalar ventana acoplable

Antes de activar el contenedor docker de MySQL, debe tener docker y docker-compose instalados en su máquina. Si no ha instalado docker y docker-compose, consulte las siguientes guías:

  • Cómo instalar Docker en CentOS
  • Cómo instalar Docker en Ubuntu

También puede consultar los enlaces de documentación oficial de Docker que se proporcionan a continuación para saber cómo configurar Docker y Docker compose.

  • https://docs.docker.com/engine/install/
  • https://docs.docker.com/compose/install/

Puede ejecutar los siguientes comandos para verificar las versiones de docker y docker-compose con las que se está ejecutando.

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

2. Descargar imagen de MySQL Docker

Vaya a Docker Hub para obtener la imagen acoplable de MySQL . Lo importante es que tienes que decidir qué versión de MySQL vas a ejecutar.

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

$ docker pull mysql:latest

Aviso :No es necesario usar la etiqueta "latest ", de forma predeterminada, extraerá la última imagen.

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

Ahora la imagen está lista para girar el contenedor. También puede omitir este paso y ejecutar "docker run " como se muestra en la siguiente sección, que extraerá la imagen si no está disponible localmente.

3. Inicie el contenedor MySQL

Ejecute el siguiente comando para activar el contenedor docker de MySQL:

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

Analicemos el comando anterior y veamos qué hace cada bandera.

--name → Para dar un nombre a su contenedor. Si no especifica esta marca, la ventana acoplable asignará algunos nombres generados aleatoriamente.

-p → Mapeo de puertos. MySQL escuchará en el puerto 3306 entonces estamos mapeando puertos (33063306 ) desde su máquina host al contenedor docker. No es necesario que el puerto host sea 3306 , puede ser cualquier cosa que esté disponible para ser utilizada.

Ejecute el siguiente netstat comando en su máquina local para verificar si el puerto asignado está escuchando o no una vez que se inicia el contenedor.

$ 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 → Adjunte un volumen al contenedor. El comportamiento predeterminado de la ventana acoplable es que no conservará los datos una vez que se elimine el contenedor, por lo que perderá todos sus datos.

Para crear almacenamiento persistente, he creado un volumen llamado "mysql_volume ". MySQL almacena los datos en /var/lib/mysql/ dentro del contenedor y aquí está asignado 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 Docker, consulte nuestro artículo detallado. en el mismo.

-d → Iniciará y ejecutará el contenedor en modo separado. Si omite el -d entonces verá los registros de inicio del contenedor en la terminal y tendrá que abrir una nueva sesión de terminal para conectarse al contenedor.

-e → Variables ambientales. Tienes que configurar la contraseña de usuario raíz de mysql usando cualquiera de los siguientes parámetros.

  • MYSQL_ROOT_PASSWORD → Configure su propia contraseña usando esta variable de entorno.
  • MYSQL_ALLOW_EMPTY_PASSWORD → Se establecerá una contraseña en blanco o nula. 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 para generar la contraseña aleatoria.

Si omite este paso, se generará un error como se muestra a continuación.

4. Comprobar el estado del contenedor de MySQL

Puede verificar el estado del contenedor lanzado usando 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. Conectarse 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 a través de MYSQL_ROOT_PASSWORD .

$ mysql -u root -p

Si ha utilizado MYSQL_RANDOM_ROOT_PASSWORD=1 al iniciar el contenedor, puede obtener la contraseña generada automáticamente de los registros.

$ docker logs
$ docker logs mysql

La contraseña de root generada automáticamente será larga y no es algo que deba recordarse. 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 privilegios necesarios.

6. Cargar datos de muestra

El principal objetivo de configurar mysql es cargar algunos datos y ejecutar consultas contra ellos. Hay algunas formas de cargar los datos. Tengo un archivo de muestra llamado "load_data.sql " con las siguientes consultas en él.

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 enfoque será copiar los datos de la máquina local al contenedor docker usando el "docker cp " comando.

$ 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 fuente o redirigir el archivo 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;

El segundo enfoque sería redirigir el .sql archivo al ejecutar docker exec comando.

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

7. Configurar el contenedor MySQL usando Docker-Compose

En lugar de extraer la imagen y ejecutar docker run comando, puede usar docker-compose para hacer girar rápidamente el contenedor. Docker-compose es más adecuado cuando tiene que crear más de un contenedor.

Cree un archivo llamado docker-compose.yml o docker-compose.yaml expediente. Copie y pegue el siguiente código yaml. Esto es lo mismo que he ejecutado 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 activará el contenedor docker de MySQL.

$ docker-compose up

Ejecute el siguiente comando para verificar el estado del contenedor lanzado usando docker-compose:

$ 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. Conéctese a la base de datos MySQL usando MySQL Workbench

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

Lo importante a tener en cuenta, independientemente del cliente GUI que esté utilizando, es qué puerto se asignó cuando está iniciando el contenedor.

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

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

8.1. Instalar MySQL Workbench en Linux

Navega al sitio oficial para descargar el archivo del paquete. Tienes que elegir tu sistema operativo para descargar el .deb o .rpm archivo.

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, solo inicie mi descarga".

En sistemas basados ​​en Debian, instale MySQL Workbench como se muestra a continuación:

$ cd <path to downloaded .deb file>

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

En sistemas basados ​​en RHEL, instale MySQL Workbench como se muestra a continuación:

$ cd <path to downloaded .rpm file>

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

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

Inicie MySQL Workbench

8.2. Conéctese a la base de datos MySQL

Conéctese a la base de datos que se ejecuta dentro de un contenedor docker. Debería intentar conectarse a localhost:3306 o localhost:<port-no> dependiendo de cómo esté configurado su contenedor.

Antes de conectarse a la base de datos, puede presionar "Probar conexión " para comprobar que MySQL Workbench pudo conectarse correctamente a la instancia de la base de datos.

Ahora puede comenzar a ejecutar sus consultas en las tablas que creó.

9. Conclusión

En este artículo, hemos visto brevemente cómo lanzar contenedores MySQL en docker usando docker run y docker-compose métodos. Si desea configurar MySQL con fines de prueba o aprendizaje, Docker es más que suficiente.

Espero que esto ayude.


Docker
  1. Cómo configurar Pure-FTPD con MySQL en CentOS y RedHat

  2. Cómo configurar LogAnalyzer con Rsyslog y MySQL

  3. Configurar Nextcloud con Redis usando Docker

  4. Cómo instalar Jenkins con Docker

  5. Cómo ejecutar MySQL en un contenedor Docker

Cómo configurar el cortafuegos con Gufw en el escritorio de Linux

Cómo reemplazar Docker con Podman en una Mac

Cómo instalar Docker CE en Linux Mint 20

Cómo configurar el balanceador de carga Traefik con Docker en Ubuntu 20.04

Cron Vs Anacron:Cómo configurar Anacron en Linux (con un ejemplo)

Cómo configurar Logstash en Linux con ElasticSearch, Redis, Nginx