Commandes MySQL FLUSH

Dans le monde de l’hébergement, MySQL reste l’un des composants les plus critiques pour alimenter les sites web dynamiques, les boutiques de commerce électronique, les systèmes de gestion de contenu (CMS) et les plateformes SaaS. Que vous gériez un cluster d’hébergement partagé, une infrastructure VPS ou des serveurs dédiés pour des clients professionnels, il est essentiel de contrôler les opérations internes de MySQL.

Un outil souvent négligé mais puissant est la commande FLUSH – une collection d’instructions SQL administratives qui vous permettent de recharger les privilèges, d’effacer les journaux, de réinitialiser les états et d’assurer la cohérence sans redémarrer le serveur.

Qu’est-ce que FLUSH dans MySQL ?

L’instruction FLUSH est utilisée pour

  • Vider les caches internes

  • Recharger les fichiers de configuration (comme les tables de privilèges)

  • Réinitialiser les informations d’état

  • Forcer MySQL à écrire les données en mémoire tampon sur le disque

Seuls les utilisateurs disposant du privilège RELOAD (ou d’un privilège supérieur, comme SUPER) peuvent exécuter la plupart des opérations FLUSH.

Commandes FLUSH courantes

1. 🔐 FLUSH PRIVILEGES (RINCER LES PRIVILÈGES)

Recharge les privilèges de l’utilisateur à partir des tables d’attribution de la base de données mysql :

FLUSH PRIVILEGES ;

Quand utiliser :

  • Après avoir modifié manuellement mysql.user ou d’autres tables d’octroi.

  • Lorsque vous modifiez l’accès d’un utilisateur à l’aide d’instructions UPDATE directes au lieu de GRANT.

2. FLUSH TABLES

Ferme toutes les tables ouvertes et force leur réouverture. Utile pour la maintenance du système de fichiers ou les sauvegardes.

FLUSH TABLES ;

Il est également possible d’effacer des tables spécifiques :

FLUSH TABLES nom_table [, nom_table] ... ;

Quand l’utiliser ?

  • Avant d’effectuer des sauvegardes avec des outils externes (par exemple, mysqldump –single-transaction).

  • Après des écritures à grande échelle qui peuvent surcharger le cache de la table.

3. FLUSH QUERY CACHE

Supprime tous les résultats des requêtes du cache des requêtes (s’il est activé) :

FLUSH QUERY CACHE ;

Remarque : le cache de requête est déprécié et supprimé dans MySQL 8.0.

4. FLUSH LOGS

Ferme et rouvre tous les fichiers journaux (journal général, journal des erreurs, journal binaire, journal des relais).

FLUSH LOGS ;

Ou efface un type de fichier spécifique :

FLUSH BINARY LOGS;
FLUSH ERROR LOGS;
FLUSH ENGINE LOGS;
FLUSH SLOW LOGS;

Quand utiliser :

  • Après la rotation des journaux

  • Lorsque les journaux sont déplacés ou archivés

  • Pour réinitialiser les journaux à des fins de débogage ou de conformité

5. FLUSH HOSTS

Réinitialise le cache des hôtes dont les connexions clients ont échoué.

FLUSH HOSTS ;

Quand l’utiliser ?

  • Lors de la réception de l’erreur suivante : “L’hôte ‘xxx’ est bloqué en raison de nombreuses erreurs de connexion :

    Host 'xxx' is blocked because of many connection errors

6. FLUSH STATUS

Remet la plupart des variables d’état à zéro (n’affecte pas les compteurs globaux comme Uptime).

FLUSH STATUS ;

Quand l’utiliser :

  • Avant un benchmarking ou un test de performance.

  • Pour obtenir des métriques propres avec SHOW STATUS.

7. FLUSH TABLES WITH READ LOCK

Vide et verrouille toutes les tables, empêchant l’écriture par d’autres sessions.

FLUSH TABLES WITH READ LOCK ;

À utiliser :

  • Pour des sauvegardes instantanées cohérentes (par exemple, avec LVM ou des outils de copie de fichiers).

  • Important : déverrouillez toujours manuellement avec UNLOCK TABLES ;

8. FLUSH DES_KEY_FILE

Recharge les fichiers de clés DES utilisés dans les anciens DES_ENCRYPT()/DES_DECRYPT() (legacy).

FLUSH DES_KEY_FILE ;

9. FLUSH USER_RESOURCES

Réinitialise les compteurs de limites de ressources par utilisateur (comme MAX_QUERIES_PER_HOUR).

FLUSH USER_RESOURCES ;

A utiliser :

  • Réinitialisation en milieu de cycle pour les utilisateurs dont les ressources sont limitées.

Commandes dépréciées/supprimées

  • FLUSH QUERY CACHE est supprimée dans MySQL 8.0.

  • FLUSH DES_KEY_FILE est obsolète.

  • Considérez les nouvelles alternatives de MySQL 8.0 comme RESET PERSIST.

Permissions requises

La plupart des opérations FLUSH nécessitent le privilège

  • Le privilègeRELOAD

  • SUPER ou SYSTEM_VARIABLES_ADMIN (pour les opérations sensibles dans MySQL 8 )

Exemple :

GRANT RELOAD ON *.* TO 'admin'@'localhost';

Conclusion

La famille de commandes FLUSH est essentielle pour le contrôle administratif dans MySQL. Que vous gériez des privilèges, des journaux ou des états de cache, comprendre comment et quand utiliser FLUSH permet de maintenir des performances et une fiabilité optimales du serveur sans nécessiter de redémarrage. Utilisez-la à bon escient avec les privilèges appropriés, en particulier dans les environnements de production.