Illustration de deux icônes de serveur de base de données, d'un dossier et d'un ordinateur portable affichant des graphiques, le tout relié par des lignes pointillées sur un fond bleu dégradé. Un grand texte superposé indique "MySQL 8.4 LTS" en orange et blanc, mettant en évidence la migration MySQL 8.4.

Ubuntu Server : migration vers MySQL 8.4 LTS

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_password dé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 vers caching_sha2_password.
  • Paramètres changent : l’ancien default_authentication_plugin est 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) et mysqlpump (préférez mysqldump ou 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_INCREMENT sur FLOAT/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_DEFINER et ALLOW_NONEXISTENT_DEFINER remplacent l’ancien SET_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_INCREMENT sur FLOAT/DOUBLE dans votre schéma et corrigez.
  • Passez un coup d’œil à vos my.cnf : supprimez default_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 Langage du code : 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;Langage du code : 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_upgrade de vos playbooks ; le serveur fait le nécessaire au démarrage.
  • Remplacez mysqlpump si vous l’utilisiez.

5. Post-upgrade

Lisez les notes de votre point release (8.4.x) et surveillez les journaux au premier démarrage.

Lire la suite

L'image montre le logo NGINX à gauche, un symbole de cadenas vert au milieu, et le logo WordPress à droite, suggérant un hébergement WordPress sécurisé avec NGINX - idéal pour ceux qui veulent bloquer l'énumération des utilisateurs WordPress. L'arrière-plan est transparent.

Bloquer complètement l’énumération des utilisateurs WordPress avec Nginx ou Apache

Lorsque vous gérez un site WordPress, la sécurité doit être une priorité. Parmi les failles les plus méconnues, il existe ce qu’on appelle l’énumération des utilisateurs.

Mais qu’est-ce que c’est exactement ?

En résumé, l’énumération des utilisateurs consiste à découvrir publiquement les noms d’utilisateurs de votre site WordPress. Pourquoi est-ce un problème ? Parce que si un pirate connaît déjà votre nom d’utilisateur, il ne lui reste plus qu’à deviner ou voler le mot de passe. En d’autres termes, c’est comme si vous laissiez la moitié de la clé de votre maison sur la porte.

Comment fonctionne l’énumération des utilisateurs ?

Par défaut, WordPress crée certaines adresses (URLs) qui permettent de révéler les noms d’utilisateurs. Ces URLs sont accessibles à tout le monde sur Internet, même sans être connecté à votre site.

Voici quelques exemples (remplacés par example.com) :

  • https://example.com/?author=1
  • https://example.com/author/admin
  • https://example.com/?author={num:1}
  • https://example.com/wp-sitemap-users-1.xml
  • https://example.com/wp-json/wp/v2/users

Si vous ouvrez ces adresses dans votre navigateur, vous risquez de voir apparaître des informations sur vos utilisateurs WordPress (souvent l’administrateur du site). Et vous pouvez imaginer ce que cela représente pour un pirate : un point d’entrée facile.

Pourquoi est-ce dangereux ?

  • Les pirates peuvent scanner automatiquement ces URLs avec des outils comme WPScan.
  • Une fois le nom d’utilisateur trouvé, ils peuvent lancer des attaques par force brute pour tester des milliers de mots de passe.
  • Cela augmente fortement les risques de piratage de votre site.

En clair : si vous laissez l’énumération des utilisateurs active, vous donnez gratuitement une information critique aux attaquants.

Lire la suite

Un logo Ubuntu orange apparaît à gauche, tandis qu'à droite se trouve une pile stylisée de trois disques de serveur blancs avec un éclair jaune, symbolisant les capacités de base de données à grande vitesse - parfaites pour avertir un administrateur de courrier électronique lors d'un redémarrage du serveur.

Recevoir un email après le redémarrage d’un serveur Linux avec systemd

Un serveur qui redémarre sans prévenir, c’est rarement anodin. Cela peut venir d’une maintenance planifiée, d’un kernel fraîchement installé, d’un crash, d’une coupure électrique, d’un watchdog un peu nerveux ou d’un humain qui a tapé reboot avec la sérénité d’un moine tibétain.

Dans tous les cas, recevoir un email après le redémarrage d’un serveur Linux permet de réagir rapidement. C’est simple, fiable, et cela donne un premier signal avant même d’ouvrir les graphes de monitoring.

Dans ce guide, nous allons créer une notification email automatique au boot avec systemd, mailutils et un script Bash propre. L’objectif : recevoir un message après chaque reboot avec le nom du serveur, la date, l’uptime, les adresses IP et quelques informations utiles.

Lire la suite