GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Comment configurer MySQL avec Docker sous Linux

Si vous êtes nouveau sur MySQL ou si vous souhaitez installer rapidement et sans effort la base de données MySQL, cet article est pour vous. Dans cet article, nous allons apprendre à configurer MySQL avec Docker et Docker Compose sous Linux.

Commençons par configurer l'environnement docker pour lancer le conteneur MySQL.

1. Installer Docker

Avant de lancer le conteneur Docker MySQL, vous devez avoir docker et docker-compose installés sur votre machine. Si vous n'avez pas installé docker et docker-compose, consultez les guides suivants :

  • Comment installer Docker dans CentOS
  • Comment installer Docker dans Ubuntu

Vous pouvez également consulter les liens officiels de la documentation Docker ci-dessous pour savoir comment configurer Docker et Docker Compose.

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

Vous pouvez exécuter les commandes suivantes pour vérifier les versions de docker et de docker-compose avec lesquelles vous exécutez.

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

2. Télécharger l'image MySQL Docker

Accédez au hub Docker pour obtenir l'image Docker MySQL . L'important est que vous décidiez quelle version de MySQL vous allez utiliser.

Exécutez la commande suivante pour extraire l'image MySQL du hub Docker vers votre machine.

$ docker pull mysql:latest

Attention :Il n'est pas nécessaire d'utiliser la balise "latest ", par défaut, il tirera la dernière image.

Pour vérifier si l'image est disponible localement, vous pouvez exécuter la commande suivante :

$ docker images mysql

Exemple de résultat :

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

Maintenant, l'image est prête à faire tourner le conteneur. Vous pouvez également ignorer cette étape et exécuter le "docker run " comme indiqué dans la section suivante qui extraira l'image si elle n'est pas disponible localement.

3. Lancer le conteneur MySQL

Exécutez la commande suivante pour démarrer le conteneur Docker MySQL :

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

Décomposons la commande ci-dessus et voyons ce que fait chaque indicateur.

--name → Pour donner un nom à votre conteneur. Si vous ne spécifiez pas cet indicateur, docker attribuera des noms générés aléatoirement.

-p → Cartographie des ports. MySQL écoutera sur le port 3306 nous mappons donc les ports (33063306 ) de votre machine hôte vers le conteneur Docker. Il n'est pas nécessaire que le port hôte soit 3306 , il peut s'agir de tout ce qui est disponible pour être utilisé.

Exécutez le netstat suivant sur votre ordinateur local pour vérifier si le port mappé écoute ou non une fois le conteneur lancé.

$ netstat -tlnup | grep -i 3306

Exemple de résultat :

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 → Attachez un volume au conteneur. Le comportement par défaut de docker est qu'il ne conservera pas les données une fois le conteneur supprimé, vous perdrez donc toutes vos données.

Pour créer un stockage persistant, j'ai créé un volume nommé "mysql_volume ". MySQL stocke les données dans /var/lib/mysql/ à l'intérieur du conteneur et ici, il est mappé au répertoire localhost /var/lib/docker/volumes/mysql_volume1/_data , vos données seront donc persistantes.

Si vous souhaitez en savoir plus sur les volumes de docker, consultez notre article détaillé sur le même.

-d → Démarrera et exécutera le conteneur en mode détaché. Si vous omettez le -d flag, vous verrez alors les journaux de démarrage du conteneur dans le terminal et vous devrez ouvrir une nouvelle session de terminal pour vous connecter au conteneur.

-e → Variables environnementales. Vous devez configurer le mot de passe de l'utilisateur root mysql en utilisant l'un des paramètres ci-dessous.

  • MYSQL_ROOT_PASSWORD → Configurez votre propre mot de passe à l'aide de cette variable d'environnement.
  • MYSQL_ALLOW_EMPTY_PASSWORD → Un mot de passe vide ou nul sera défini. Vous devez définir MYSQL_ALLOW_EMPTY_PASSWORD=1 .
  • MYSQL_RANDOM_ROOT_PASSWORD → un mot de passe aléatoire sera généré au démarrage du conteneur. Vous devez définir MYSQL_RANDOM_ROOT_PASSWORD=1 pour générer le mot de passe aléatoire.

Si vous ignorez cette étape, une erreur sera générée comme indiqué ci-dessous.

4. Vérifier l'état du conteneur MySQL

Vous pouvez vérifier l'état du conteneur lancé à l'aide de la commande suivante :

$ docker ps

Exemple de résultat :

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. Se connecter à la base de données MySQL

Exécutez la commande suivante pour vous connecter au conteneur MySQL.

$ docker exec -it mysql bash

Connectez-vous à la base de données MySQL en tant que root utilisateur en exécutant la commande suivante. Dans mon cas, j'ai configuré mon propre mot de passe via MYSQL_ROOT_PASSWORD .

$ mysql -u root -p

Si vous avez utilisé MYSQL_RANDOM_ROOT_PASSWORD=1 lors du lancement du conteneur, vous pouvez obtenir le mot de passe généré automatiquement à partir des journaux.

$ docker logs
$ docker logs mysql

Le mot de passe root généré automatiquement sera long et il ne faut pas s'en souvenir. Vous pouvez réinitialiser le mot de passe root en exécutant la requête suivante.

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

Remplacez le mot de passe 'mysqlpassword' par votre propre mot de passe. Vous pouvez également créer votre propre utilisateur et lui accorder les privilèges nécessaires.

6. Charger des exemples de données

L'objectif principal de la configuration de mysql est de charger des données et d'exécuter des requêtes dessus. Il existe plusieurs façons de charger les données. J'ai un exemple de fichier nommé "load_data.sql " avec les requêtes suivantes.

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");

La première approche sera de copier les données de la machine locale vers le conteneur docker en utilisant le "docker cp " commande.

$ docker cp load_data.sql mysql:/tmp

$ docker exec -it mysql bash

$ ls -l /tmp/

Vous pouvez maintenant vous connecter au client mysql et exécuter la commande source ou rediriger le fichier vers le client mysql.

$ mysql -u root -p

mysql> source /tmp/load_data.sql

Ou

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

Connectez-vous à la base de données et interrogez votre table.

$ mysql -u root -p

mysql> show databases;

mysql> use football;

mysql> show tables;

mysql> select * from players;

La deuxième approche serait de rediriger le .sql fichier lors de l'exécution de docker exec commande.

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

7. Configurer le conteneur MySQL à l'aide de Docker-Compose

Au lieu d'extraire l'image et d'exécuter le docker run commande, vous pouvez utiliser docker-compose pour faire tourner rapidement le récipient. Docker-compose convient mieux lorsque vous avez plusieurs conteneurs à créer.

Créez un fichier nommé docker-compose.yml ou docker-compose.yaml dossier. Copiez et collez le code yaml suivant. C'est la même chose que ce que j'ai exécuté manuellement dans les sections précédentes.

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:

Exécutez maintenant la commande suivante qui lancera le conteneur Docker MySQL.

$ docker-compose up

Exécutez la commande suivante pour vérifier l'état du conteneur lancé à l'aide de docker-compose :

$ docker-compose ps

Exemple de résultat :

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

8. Connectez-vous à la base de données MySQL à l'aide de MySQL Workbench

Jusqu'à présent, nous avons vu comment se connecter à la base de données à l'aide du client mysql depuis l'intérieur du conteneur. Vous pouvez également vous connecter à la base de données à l'aide de n'importe quel client graphique comme mysql workbench, dbeaver, Heidi SQL, etc.

La chose importante à noter, quel que soit le client GUI que vous utilisez, est le port mappé lorsque vous lancez le conteneur.

Dans mon cas, j'ai mappé localhost (3306 ) -> conteneur (3306 ). Donc, si je dois établir une connexion à la base de données, je dois me connecter à localhost:3306 ou 127.0.01:3306 .

J'utilise MySQL Workbench comme client graphique. Si vous n'avez pas installé MySQL Workbench sur votre ordinateur, vous pouvez utiliser les instructions ci-dessous pour l'installer.

8.1. Installer MySQL Workbench sous Linux

Accédez au site officiel pour télécharger le fichier de package. Vous devez choisir votre système d'exploitation pour télécharger le .deb ou .rpm fichier.

À l'étape suivante, il vous demandera de vous connecter ou de vous inscrire. Vous pouvez ignorer la connexion ou l'inscription en cliquant sur l'option "Non merci, démarrez simplement mon téléchargement".

Sur les systèmes basés sur Debian, installez MySQL Workbench comme ci-dessous :

$ cd <path to downloaded .deb file>

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

Sur les systèmes basés sur RHEL, installez MySQL Workbench comme ci-dessous :

$ cd <path to downloaded .rpm file>

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

Une fois l'installation terminée, vous pouvez lancer mysql workbench depuis le menu ou le tiret.

Lancer MySQL Workbench

8.2. Connectez-vous à la base de données MySQL

Connectez-vous à la base de données exécutée dans un conteneur Docker. Vous devriez essayer de vous connecter à localhost:3306 ou localhost:<port-no> selon la configuration de votre conteneur.

Avant de vous connecter à la base de données, vous pouvez appuyer sur "Tester la connexion " pour vérifier que MySQL Workbench a réussi à se connecter à l'instance de base de données.

Vous pouvez maintenant commencer à exécuter vos requêtes sur les tables que vous avez créées.

9. Conclusion

Dans cet article, nous avons brièvement vu comment lancer des conteneurs MySQL dans docker en utilisant docker run et docker-compose méthodes. Si vous souhaitez configurer MySQL à des fins de test ou d'apprentissage, Docker est plus que suffisant.

J'espère que cela vous aidera.


Docker
  1. Comment configurer Pure-FTPD avec MySQL sur CentOS et RedHat

  2. Comment configurer LogAnalyzer avec Rsyslog et MySQL

  3. Configurer Nextcloud avec Redis à l'aide de Docker

  4. Comment installer Jenkins avec Docker

  5. Comment exécuter MySQL dans un conteneur Docker

Comment configurer le pare-feu avec Gufw sur le bureau Linux

Comment remplacer Docker par Podman sur un Mac

Comment installer Docker CE dans Linux Mint 20

Comment configurer l'équilibreur de charge Traefik avec Docker dans Ubuntu 20.04

Cron Vs Anacron :Comment configurer Anacron sous Linux (avec un exemple)

Comment configurer Logstash sur Linux avec ElasticSearch, Redis, Nginx