Les distributions Linux embarquent souvent MariaDB à la place de MySQL, ou une version MySQL figée pendant tout le cycle de vie de la distribution. Si vous voulez MySQL 8.4 LTS — la version Long Term Support avec 8 ans de correctifs de sécurité — le dépôt officiel Oracle est le chemin le plus fiable.
Ce guide vous accompagne de A à Z : ajout du dépôt, installation des paquets, vérification du service, sécurisation initiale et première connexion. En quelques minutes, vous aurez une instance MySQL opérationnelle, sécurisée et prête pour les guides suivants.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Ajouter le dépôt APT ou YUM officiel Oracle et installer MySQL 8.4 LTS
- Comprendre la différence entre l’installation Debian (mot de passe défini à l’installation) et RHEL (mot de passe temporaire généré)
- Vérifier que le service est actif avec
systemctlet se connecter avec le clientmysql - Sécuriser l’installation avec
mysql_secure_installation(suppression utilisateur anonyme, désactivation accès root distant) - Identifier les fichiers de configuration et leur emplacement selon la distribution
Dans quel contexte ?
Section intitulée « Dans quel contexte ? »Ce guide est votre point d’entrée si vous êtes dans l’une de ces situations :
- Vous montez un serveur de développement ou de test et voulez MySQL (pas MariaDB)
- Vous devez standardiser la version MySQL sur plusieurs machines (Debian + RHEL dans le même parc)
- Vous préparez un lab pour suivre les guides configuration, sauvegarde ou réplication de cette section
- Votre distribution fournit MariaDB par défaut et vous voulez installer le MySQL officiel d’Oracle
- Vous déployez MySQL pour la première fois et voulez comprendre ce que l’installation crée sur le système
Ce guide ne couvre pas…
Section intitulée « Ce guide ne couvre pas… »L’installation pose les fondations — la configuration fine et la sécurisation avancée sont dans les guides dédiés :
Prérequis
Section intitulée « Prérequis »- Un serveur Debian 12, Ubuntu 22.04+, Rocky Linux 9 ou RHEL 9 avec accès root ou sudo
- Une connexion Internet (pour télécharger les paquets depuis les dépôts Oracle)
- Aucune version de MariaDB installée — les paquets entrent en conflit. Si MariaDB est présent, désinstallez-le d’abord (voir section Dépannage)
MySQL vs MariaDB : clarification
Section intitulée « MySQL vs MariaDB : clarification »Beaucoup de distributions Linux (Debian, Rocky Linux, Fedora) embarquent MariaDB à la place de MySQL dans leurs dépôts par défaut. MariaDB est un fork de MySQL créé en 2009 par le fondateur original de MySQL après le rachat par Oracle.
| MySQL (Oracle) | MariaDB | |
|---|---|---|
| Éditeur | Oracle Corporation | MariaDB Foundation / MariaDB plc |
| Version LTS actuelle | 8.4 (support 8 ans) | 11.4 (support 5 ans) |
| Moteur par défaut | InnoDB | InnoDB (fork Aria disponible) |
| Réplication | GTID, Group Replication, InnoDB Cluster | GTID (format différent), Galera Cluster |
| Plugin auth par défaut | caching_sha2_password | mysql_native_password |
| Performance Schema | Complet | Partiel (divergences) |
Les deux systèmes partagent le protocole réseau et une grande partie de la syntaxe SQL, mais ils ne sont pas interchangeables en production. Les extensions spécifiques (Group Replication vs Galera, Performance Schema avancé, MySQL Shell) ne sont pas compatibles.
Ce guide porte sur MySQL officiel d’Oracle. Si vous voulez MariaDB, les commandes d’installation sont différentes.
Installer depuis les dépôts officiels Oracle
Section intitulée « Installer depuis les dépôts officiels Oracle »-
Télécharger le paquet de configuration du dépôt Oracle
Le paquet
mysql-apt-configajoute les sources APT et les clés GPG d’Oracle. Téléchargez la version courante depuis la page APT officielle :Fenêtre de terminal cd /tmpwget https://dev.mysql.com/get/mysql-apt-config_0.8.36-1_all.deb -
Installer le paquet de configuration
Pour une installation non interactive qui sélectionne directement MySQL 8.4 LTS :
Fenêtre de terminal sudo DEBIAN_FRONTEND=noninteractive dpkg -i mysql-apt-config_0.8.36-1_all.debCe paquet crée le fichier
/etc/apt/sources.list.d/mysql.listavec la bonne URL et la clé GPG Oracle. -
Mettre à jour les sources et installer MySQL
Fenêtre de terminal sudo apt updatesudo apt install -y mysql-serverL’installation tire automatiquement les dépendances :
mysql-client,mysql-common,mysql-community-server,mysql-community-client. -
Vérifier que le service est actif
Fenêtre de terminal sudo systemctl status mysql● mysql.service - MySQL Community ServerLoaded: loaded (/lib/systemd/system/mysql.service; enabled; preset: enabled)Active: active (running) since Mon 2026-04-13 08:49:23 UTC; 1min agoDocs: man:mysqld(8)http://dev.mysql.com/doc/refman/en/using-systemd.htmlProcess: 4498 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)Main PID: 4521 (/usr/sbin/mysqld)Status: "Server is operational"Tasks: 39 (limit: 2314)Memory: 364.2MCPU: 3.241sCGroup: /system.slice/mysql.service└─4521 /usr/sbin/mysqld
-
Installer le dépôt YUM officiel MySQL
Fenêtre de terminal sudo dnf install -y https://dev.mysql.com/get/mysql84-community-release-el9-3.noarch.rpmCe RPM ajoute le fichier repo
/etc/yum.repos.d/mysql-community.repoet les clés GPG Oracle. -
Installer MySQL
Fenêtre de terminal sudo dnf install -y mysql-community-server -
Démarrer et activer le service
Contrairement à Debian, l’installation sur RHEL ne démarre pas automatiquement le service :
Fenêtre de terminal sudo systemctl enable --now mysqld -
Récupérer le mot de passe root temporaire
Sur RHEL/Rocky, MySQL génère un mot de passe root temporaire au premier démarrage, écrit dans le log d’erreurs :
Fenêtre de terminal sudo grep 'temporary password' /var/log/mysqld.log2026-04-13T08:49:28.123456Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Xk8#fPz!2qLmNotez ce mot de passe — vous en aurez besoin pour la première connexion.
-
Changer le mot de passe root
Connectez-vous avec le mot de passe temporaire et changez-le immédiatement :
Fenêtre de terminal mysql -u root -pALTER USER 'root'@'localhost' IDENTIFIED BY 'VotreNouveauMotDePasse';
Vérifier l’installation
Section intitulée « Vérifier l’installation »Le service systemd
Section intitulée « Le service systemd »Le service MySQL s’appelle mysql sur Debian/Ubuntu et mysqld sur RHEL/Rocky :
# État du servicesudo systemctl status mysql
# Arrêter / démarrer / redémarrersudo systemctl stop mysqlsudo systemctl start mysqlsudo systemctl restart mysql
# Activer le démarrage au bootsudo systemctl enable mysql# État du servicesudo systemctl status mysqld
# Arrêter / démarrersudo systemctl stop mysqldsudo systemctl start mysqld
# Activer le démarrage au bootsudo systemctl enable mysqldLes paquets installés
Section intitulée « Les paquets installés »Voici ce que l’installation Oracle pose sur le système (Debian) :
dpkg -l 'mysql*' | grep '^ii'ii mysql-apt-config 0.8.36-1 all Auto configuration for MySQL APT Repo.ii mysql-client 8.4.5-1debian12 amd64 MySQL Client meta package for v8.4ii mysql-common 8.4.5-1debian12 amd64 MySQL Commonii mysql-community-client 8.4.5-1debian12 amd64 MySQL Clientii mysql-community-server 8.4.5-1debian12 amd64 MySQL Serverii mysql-server 8.4.5-1debian12 amd64 MySQL Server meta package for v8.4| Paquet | Contenu |
|---|---|
mysql-community-server | Le serveur mysqld, les fichiers de configuration, les scripts systemd |
mysql-community-client | Les outils client : mysql, mysqldump, mysqladmin, mysqlbinlog |
mysql-common | Fichiers de configuration partagés |
mysql-apt-config | Gestion du dépôt Oracle (sélection de version) |
Les fichiers de configuration
Section intitulée « Les fichiers de configuration »L’emplacement de la configuration dépend de la distribution :
| Distribution | Configuration serveur | Datadir |
|---|---|---|
| Debian / Ubuntu | /etc/mysql/mysql.conf.d/mysqld.cnf | /var/lib/mysql/ |
| RHEL / Rocky | /etc/my.cnf | /var/lib/mysql/ |
MySQL lit ses fichiers de configuration dans un ordre précis :
mysqld --verbose --help 2>/dev/null | grep -A1 "Default options"Default options are read from the following files in the given order:/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnfSur Debian, le fichier principal /etc/mysql/my.cnf inclut les fichiers de /etc/mysql/conf.d/ et /etc/mysql/mysql.conf.d/ :
/etc/mysql/├── my.cnf → Fichier principal (inclut conf.d/ et mysql.conf.d/)├── conf.d/│ └── mysql.cnf → Options du client mysql└── mysql.conf.d/ └── mysqld.cnf → Configuration du serveur mysqldVoici le contenu par défaut de mysqld.cnf (les paramètres essentiels) :
grep -v '^#\|^$' /etc/mysql/mysql.conf.d/mysqld.cnf[mysqld]pid-file = /var/run/mysqld/mysqld.pidsocket = /var/run/mysqld/mysqld.sockdatadir = /var/lib/mysqllog-error = /var/log/mysql/error.logSe connecter avec le client mysql
Section intitulée « Se connecter avec le client mysql »La connexion locale passe par un socket Unix — c’est le comportement par défaut quand vous ne spécifiez pas de -h :
mysql -u root -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 8Server version: 8.4.5 MySQL Community Server - GPL
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>Vérifiez la version et la connexion :
SELECT VERSION();+-----------+| VERSION() |+-----------+| 8.4.5 |+-----------+\s--------------mysql Ver 8.4.5 for Linux on x86_64 (MySQL Community Server - GPL)
Connection id: 8Current database:Current user: root@localhostSSL: Not in useCurrent pager: stdoutUsing outfile: ''Using delimiter: ;Server version: 8.4.5 MySQL Community Server - GPLProtocol version: 10Connection: Localhost via UNIX socketServer characterset: utf8mb4Db characterset: utf8mb4Client characterset: utf8mb4Conn. characterset: utf8mb4UNIX socket: /var/run/mysqld/mysqld.sockBinary data as: HexadecimalUptime: 15 min 32 secConnection: Localhost via UNIX socket confirme que la connexion passe par le socket, sans réseau.
Vérifier les paramètres clés après installation
Section intitulée « Vérifier les paramètres clés après installation »SELECT @@innodb_buffer_pool_size / 1024 / 1024 AS buffer_pool_mb, @@max_connections, @@bind_address, @@log_bin, @@gtid_mode;+----------------+-----------------+--------------+---------+-----------+| buffer_pool_mb | max_connections | bind_address | log_bin | gtid_mode |+----------------+-----------------+--------------+---------+-----------+| 128 | 151 | 127.0.0.1 | 1 | OFF |+----------------+-----------------+--------------+---------+-----------+| Paramètre | Valeur par défaut | Ce que ça signifie |
|---|---|---|
innodb_buffer_pool_size | 128 Mo | Cache mémoire InnoDB — beaucoup trop petit pour la production |
max_connections | 151 | Maximum 151 connexions simultanées |
bind_address | 127.0.0.1 | MySQL n’écoute que localement — pas d’accès réseau distant |
log_bin | ON (MySQL 8.4) | Le binary log est activé par défaut |
gtid_mode | OFF | GTID désactivé par défaut — à activer pour la réplication |
Vérifiez le plugin d’authentification des comptes existants :
SELECT user, host, plugin FROM mysql.user WHERE user = 'root';+------+-----------+-----------------------+| user | host | plugin |+------+-----------+-----------------------+| root | localhost | caching_sha2_password |+------+-----------+-----------------------+Sécuriser l’installation initiale
Section intitulée « Sécuriser l’installation initiale »mysql_secure_installation
Section intitulée « mysql_secure_installation »MySQL fournit un script interactif qui applique les premières mesures de sécurité :
sudo mysql_secure_installationLe script pose plusieurs questions selon votre méthode d’installation. Sur les installations RPM/YUM, le composant validate_password est souvent déjà installé et activé au premier démarrage — la question correspondante n’apparaît alors pas.
| Question | Réponse recommandée | Pourquoi |
|---|---|---|
| Setup VALIDATE PASSWORD component? | Yes (si proposé) | Active la politique de complexité des mots de passe |
| Password validation policy | MEDIUM (1) | Exige longueur + majuscules + chiffres + caractères spéciaux |
| Change root password? | No (si déjà changé) | Inutile si vous venez de le définir à l’installation |
| Remove anonymous users? | Yes | Supprime les comptes sans nom qui permettent une connexion sans authentification |
| Disallow root login remotely? | Yes | Empêche la connexion root depuis un autre serveur |
| Remove test database? | Yes | Supprime la base test accessible à tous |
| Reload privilege tables? | Yes | Applique immédiatement les changements |
Après exécution, vérifiez qu’il ne reste plus de compte anonyme :
SELECT user, host, plugin FROM mysql.user;+------------------+-----------+-----------------------+| user | host | plugin |+------------------+-----------+-----------------------+| mysql.infoschema | localhost | caching_sha2_password || mysql.session | localhost | caching_sha2_password || mysql.sys | localhost | caching_sha2_password || root | localhost | caching_sha2_password |+------------------+-----------+-----------------------+Quatre comptes système et le compte root — pas de compte anonyme, pas de compte root@% (distant).
Créer un premier utilisateur d’administration
Section intitulée « Créer un premier utilisateur d’administration »Ne travaillez pas au quotidien avec le compte root. Créez un compte dédié :
CREATE USER 'labadmin'@'localhost' IDENTIFIED BY 'MotDePasseFort!2026';GRANT ALL PRIVILEGES ON *.* TO 'labadmin'@'localhost' WITH GRANT OPTION;Pour un compte qui doit se connecter depuis le réseau (lab, développement) :
CREATE USER 'labadmin'@'%' IDENTIFIED BY 'MotDePasseFort!2026';GRANT ALL PRIVILEGES ON *.* TO 'labadmin'@'%' WITH GRANT OPTION;Préparer un lab avec le dépôt lab-mysql
Section intitulée « Préparer un lab avec le dépôt lab-mysql »Si vous suivez les guides de cette section avec un lab KVM, le dépôt lab-mysql automatise l’installation complète :
cd ~/Projets/lab-mysql
# Tout déployer en une commandemake allCette commande :
- Télécharge l’image Debian 12 cloud
- Génère le cloud-init avec votre clé SSH
- Crée la VM KVM (
mysql-lab, 192.168.122.70) - Installe MySQL 8.4 LTS depuis le dépôt Oracle
- Charge les données d’exemple (base
labdbavec tables DevOps)
Pour vous connecter au lab :
make ssh # SSH sur la VMmake status # Vérifie MySQL et les basesLe guide Configuration et les suivants s’appuient sur ce lab.
Dépannage
Section intitulée « Dépannage »Le service ne démarre pas
Section intitulée « Le service ne démarre pas »Consultez les logs d’erreurs :
# Debian / Ubuntusudo cat /var/log/mysql/error.log | tail -30
# RHEL / Rockysudo cat /var/log/mysqld.log | tail -30
# Ou via journalctlsudo journalctl -u mysql --no-pager -n 30 # Debiansudo journalctl -u mysqld --no-pager -n 30 # RHELCauses fréquentes :
| Symptôme | Cause probable | Solution |
|---|---|---|
[ERROR] Can't start server: Bind on TCP/IP port: Address already in use | Un autre processus utilise le port 3306 | ss -tlnp | grep 3306 pour identifier le conflit |
[ERROR] --initialize specified but the data directory has files in it | Le datadir contient déjà des fichiers | Soit supprimer /var/lib/mysql/*, soit utiliser un autre datadir |
[ERROR] InnoDB: Unable to lock ./ibdata1 | Une autre instance mysqld tourne déjà | ps aux | grep mysqld et arrêter l’instance en conflit |
| Service introuvable | Mauvais nom de service | mysql (Debian) vs mysqld (RHEL) |
Mot de passe root perdu
Section intitulée « Mot de passe root perdu »Si vous perdez le mot de passe root, vous pouvez le réinitialiser en mode maintenance :
-
Arrêter MySQL
Fenêtre de terminal sudo systemctl stop mysql -
Démarrer en mode skip-grant-tables
Fenêtre de terminal sudo mysqld --skip-grant-tables --skip-networking --user=mysql &L’option
--skip-networkingempêche toute connexion réseau pendant cette opération sensible. -
Se connecter sans mot de passe et réinitialiser
Fenêtre de terminal mysql -u rootFLUSH PRIVILEGES;ALTER USER 'root'@'localhost' IDENTIFIED BY 'NouveauMotDePasse'; -
Arrêter le processus et redémarrer normalement
Fenêtre de terminal sudo kill $(cat /var/run/mysqld/mysqld.pid)sudo systemctl start mysql
Conflit avec MariaDB
Section intitulée « Conflit avec MariaDB »Si vous obtenez une erreur de conflit de paquets à l’installation :
# Lister les paquets MariaDB installésdpkg -l | grep mariadb
# Désinstaller MariaDB (les données sont conservées sauf avec purge)sudo apt remove --purge mariadb-server mariadb-client mariadb-common
# Nettoyer le datadir si nécessairesudo rm -rf /var/lib/mysql/*
# Réinstaller MySQLsudo apt updatesudo apt install -y mysql-serverÀ retenir
Section intitulée « À retenir »- Utilisez les dépôts Oracle pour obtenir MySQL 8.4 LTS — les dépôts de distribution fournissent souvent MariaDB ou une version ancienne de MySQL.
- Sur Debian/Ubuntu, l’installateur propose de définir le mot de passe root (laisser vide active l’authentification par socket Unix). Sur RHEL/Rocky, un mot de passe temporaire est généré dans
/var/log/mysqld.log. - Le service s’appelle
mysqlsur Debian etmysqldsur RHEL — ne confondez pas les deux. - Exécutez
mysql_secure_installationimmédiatement après l’installation pour supprimer les comptes anonymes et la base test. - Le plugin d’authentification par défaut est
caching_sha2_password(SHA-256) — plus sécurisé que l’ancienmysql_native_password. - La configuration serveur est dans
/etc/mysql/mysql.conf.d/mysqld.cnf(Debian) ou/etc/my.cnf(RHEL). - Le buffer pool à 128 Mo par défaut est insuffisant pour la production — le guide Configuration détaille le dimensionnement.
- Créez un compte dédié pour le travail quotidien — n’utilisez
rootque pour l’administration système.