Instalación MySQL en Docker

En esta entrada vamos a realizar una instalación de MySQL Server con Docker. Antes de comenzar debes instalar el motor y el cliente Docker en la maquina donde vayas a realizar la instalación. Sino tienes Docker instalado, puedes seguir cualquiera de los muchos tutoriales que existen en la web.

Para realizar una instalación de forma correcta puedes seguir las indicaciones en la siguiente URL :

https://hub.docker.com/r/mysql/mysql-server


Si quieres realizar una instalación descargando la imagen oficial soportada por Oracle, puedes seguir las indicaciones en la siguiente URL

https://dev.mysql.com/doc/refman/8.0/en/docker-mysql-getting-started.html

En nuestro caso al tratarse de una base de datos de test, utilizaremos la versión oficial MySQL abierta soportada por la comunidad, es decir la del primer enlace.

En primer lugar, lo primero que tenemos que hacer es descargar la imagen MySQL en nuestro Docker, tal y cómo indica la parte superior de la pantalla de la URL indicada con anterioridad. Si se incorpora el comando «latest» o se deja vació, se bajará la última versión disponible. Si por el contrario, se quisiera una versión específica, es posible especificarlo en el comando. En nuestro caso, bajaremos la última versión disponible.

1 .- Descargamos la imagen de MySQL en nuestro Docker.

[root@ic-1 ~]# sudo docker pull mysql/mysql-server:latest
Trying to pull repository docker.io/mysql/mysql-server …
latest: Pulling from docker.io/mysql/mysql-server
6a4a3ef82cdc: Pull complete
5518b09b1089: Pull complete
b6b576315b62: Pull complete
349b52643cc3: Pull complete
abe8d2406c31: Pull complete
c7668948e14a: Pull complete
c7e93886e496: Pull complete
Digest: sha256:d6c8301b7834c5b9c2b733b10b7e630f441af7bc917c74dba379f24eeeb6a313
Status: Downloaded newer image for mysql/mysql-server:latest

Podemos listar las imágenes de Docker que tenemos bajadas para comprobar que tenemos nuestra imagen mySQL con este comando:

docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
mysql/mysql-server latest 1d9c2219ff69 11 months ago 496MB

2 .- Ejecutamos y arrancamos nuestra instancia de MySQL Server.

Para arrancar un nuevo contenedor de MySQL Server, tenemos que ejecutar el siguiente comando:

docker run –name=container_name –restart on-failure -d image_name:tag

Opciones:

image_name : Nombre de la imagen que vamos a usar para ejecutar el contenedor.
– -name : Opcional, sirve para dar un nombre personalizado a nuestro contenedor, si se omite, se generará un nombre aleatorio.
– -restart : Configura la política de reinicio del contenedor, debe establecerse un valor en caso de error. Revisar documentación para aplicar esta opción.

Por ejemplo, vamos a levantar un nuevo contenedor de Docker para MySQL server usando el comando siguiente:

Con este comando estamos arrancando el contendor de MySQL con el nombre «mysqltest» usando la última versión de MySQL disponible.

Comprobamos que el contenedor está ejecutándose con el siguiente comando:

docker ps

root@ic-1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5b7ba4107799 mysql/mysql-server:latest «/entrypoint.sh mysq…» About a minute ago Up About a minute (health: starting) 3306/tcp, 33060-33061/tcp mysql_test

3.- Recuperamos la password temporal del contenedor mysql

[root@ic-1 ~]# docker logs mysql_test 2> 1 | grep GENERATED
[Entrypoint] GENERATED ROOT PASSWORD: @WK5/k24XE;%/lrGn51v6;q@2Q_KEe5A

4.- Ejecutamos el comando necesario para conectarnos a la base de datos MySQL que está corriendo en el contenedor proporcionando la password temporal obtenida en el paso anterior, de la siguiente manera.

[root@ic-1 ~]# docker exec -it mysql_test mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 471
Server version: 8.0.32
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql>

5.- Una vez dentro de MySQL debemos cambiar la password temporal de root, para ello, lanzamos el comando siguiente:

mysql> ALTER USER USER () identified by ‘oracleconraul’;
Query OK, 0 rows affected (0.19 sec)

[root@ic-1 ~]# docker exec -it mysql_test mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 519
Server version: 8.0.32 MySQL Community Server – GPL
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql> select version();
+———–+
| version() |
+———–+
| 8.0.32 |
+———–+
1 row in set (0.00 sec)

mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| performance_schema |
| sys |
+——————–+
4 rows in set (0.00 sec)

6.- Para parar y/o arrancar el docker que contiene MySQL, únicamente tendrás que hacer lo siguiente:

Parar el conenedor:

[root@ic-1 ~]# docker stop mysql_test
mysql_test

–Comprobar que ha parado correctamente, ejecutando el comando:

docker ps -a

[root@ic-1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5b7ba4107799 mysql/mysql-server:latest «/entrypoint.sh mysq…» 4 hours ago Exited (0) 3 minutes ago mysql_test

–Volvemos a arrancar el contenedor MySQL y comprobamos que está ejecutándose correctamente:

[root@ic-1 ~]# docker start mysql_test
mysql_test

[root@ic-1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5b7ba4107799 mysql/mysql-server:latest «/entrypoint.sh mysq…» 5 hours ago Up 4 minutes (healthy) 3306/tcp, 33060-33061/tcp mysql_test

7.- Entramos de nuevo a mysql, y comenzamos a disfrutar de este gestor de Base de datos.

[root@ic-1 ~]# docker exec -it mysql_test mysql -uroot -p
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 21
Server version: 8.0.32 MySQL Community Server – GPL
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement

Estos son los pasos genéricos que tienes que seguir para poder ejecutar MySQL Server en un entorno docker. Actualmente este tipo de despliegues se están convirtiendo en arquitecturas cada vez más habituales no sólo en entornos de desarrollo, sino también en entornos productivos, especialmente por su versatilidad y agilidad en el despliegue.

Para una instalación en una máquina o servidor de MySQL, puedes ver esta entrada de mi blog donde se especifica paso a paso cómo instalar una versión de MySQL 8.0 en una máquina o servidor Linux. https://bdconraul.com/instalacion-mysql-8-0-linux/

Deja un comentario

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

YouTube
LinkedIn