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.
Tabla de Contenidos
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
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 (3306
→ 3306
) 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 configurarMYSQL_ALLOW_EMPTY_PASSWORD=1
.MYSQL_RANDOM_ROOT_PASSWORD
→ Se generará una contraseña aleatoria cuando se inicie el contenedor.Tienes que configurarMYSQL_RANDOM_ROOT_PASSWORD=1
Genera una contraseña aleatoria.
Si omite este paso, se producirá el error que se muestra a continuación.
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
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
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;
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
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.
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".
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.
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.
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.
Ahora puede comenzar a ejecutar consultas en la tabla que creó.
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.