Voici venu le temps de mettre à jour MySQL 8.0 vers MySQL 8.4 LTS sur notre serveur Ubuntu 24.04 Noble, pour plus de performance, sécurité et stabilité.
Changements clés entre MySQL 8.0 et MySQL 8.4 LTS
Vue d’ensemble
MySQL 8.4 est une version LTS (Long Term Support) donc la cadence des mises à jour est stable, continue, avec peu de ruptures.
Sécurité et authentification
mysql_native_passworddésactivé par défaut. Le plugin existe encore, mais n’est plus chargé en 8.4. Résultat : les comptes qui l’utilisent échouent à l’authentification jusqu’à ce que vous le réactiviez (temporaire) ou que vous migriez les comptes verscaching_sha2_password.- Paramètres changent : l’ancien
default_authentication_pluginest retiré ; utilisez désormais la politique d’authentification actuelle (et migrez les comptes).
Outils et commandes retirés / modifiés
- Retirés :
mysql_upgrade(mise à niveau du dictionnaire gérée automatiquement au démarrage du serveur) etmysqlpump(préférezmysqldumpou les utilitaires de MySQL Shell). - Terminologie réplication : nettoyage achevé (adieu les anciennes commandes “master”). Utilisez les variantes modernes (
SHOW BINARY LOG STATUS, etc.).
InnoDB et perfs (nouveaux défauts)
8.4 affine plusieurs valeurs par défaut pour mieux coller au matériel actuel (I/O, concurrency). Attendez-vous à des valeurs plus agressives pour la capacité I/O et des toggles historiques coupés par défaut (ex. Adaptive Hash Index OFF). Vérifiez vos overrides côté mysqld.cnf.
SQL, DDL & privilèges
- Interdiction définitive :
AUTO_INCREMENTsurFLOAT/DOUBLE— toléré (déprécié) en 8.0, erreur en 8.4. Corrigez avant de migrer (changez de type ou retirez l’AUTO_INCREMENT). - Nouveaux privilèges plus fins :
SET_ANY_DEFINERetALLOW_NONEXISTENT_DEFINERremplacent l’ancienSET_USER_ID(retiré). Utile pour sécuriser routines/triggers avec DEFINER.
LTS : ce que ça change opérationnellement
Les versions 8.4.x apportent surtout des corrections et des ajustements à faible risque. Les notes de version par point release (8.4.4, 8.4.5, 8.4.6…) détaillent les bugfixes et micro-améliorations.
Checklist de migration de MySQL 8.0 vers MySQL 8.4
1. Audit pré-upgrade
- Lisez la page « What’s new in 8.4 since 8.0 » et la section “Changes in MySQL 8.4” pour repérer ce qui casse chez vous (options retirées, syntaxes interdites).
- Cherchez
AUTO_INCREMENTsurFLOAT/DOUBLEdans votre schéma et corrigez. - Passez un coup d’œil à vos
my.cnf: supprimezdefault_authentication_plugin, autres options dépréciées 8.0, et adaptez si besoin.
2. Authentification (le vrai sujet qui casse les apps)
Option A (transitoire) : réactivez le plugin legacy pour rallumer vite vos apps, puis migrez proprement:
# nano /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
mysql_native_password=ON Code language: PHP (php)
Redémarrez MySQL, puis planifiez la migration de tous les comptes vers caching_sha2_password.
Option B (propre, recommandée) : migrez chaque compte applicatif :
ALTER USER 'app_user'@'localhost'
IDENTIFIED WITH caching_sha2_password BY 'MotDePasseSolide!';
FLUSH PRIVILEGES;Code language: JavaScript (javascript)
PHP 8.x et mysqlnd gèrent caching_sha2_password nativement.
3. Réplication & scripts
Mettez à jour scripts et dashboards qui appellent les anciennes commandes “master/slave”. Utilisez SHOW REPLICA STATUS, SHOW BINARY LOG STATUS, etc.
4. Outils & automatisation
- Retirez
mysql_upgradede vos playbooks ; le serveur fait le nécessaire au démarrage. - Remplacez
mysqlpumpsi vous l’utilisiez.
5. Post-upgrade
Lisez les notes de votre point release (8.4.x) et surveillez les journaux au premier démarrage.