Étiquette : phpMyAdmin

  • Automatiser la gestion de vos bases de données MySQL à l’aide d’événements

    Courant 2025 le site eixerit.info a connu de nombreux problèmes techniques, principalement dû à la base de données, tournant avec MySQL. Ces problèmes sont, en grande partie, réglés grâce à la création d’un événement en SQL, directement exécuté par le serveur de base de données.
    Voici un petit tutoriel sur le sujet.

    Cas concret

    En 2024 j’ai passé le site sous Drupal. L’installation a été réalisée directement depuis le back-office d’OVH. Rétrospectivement c’était sans doute une erreur, Drupal étant mal configuré au final. Le résultat a été que les tables de gestion des logs et la table watchdog se sont rapidement remplies, suite à des tentatives de création de faux comptes et d’utilisation d’URL erronées par des bots.
    En quelques jours la taille de la base de données dépassait donc les 512 Mo, soit la taille disponible dans le cadre de l’hébergement mutualisé que j’ai souscrit.

    La solution simple consiste à effacer périodiquement ces tables.

    Sauf que cette solution est contraignante. Il faut en effet se connecter fréquemment, effectuer les opérations, et vérifier que l’on n’a rien cassé.

    L’idée pour évacuer cette contrainte est donc d’automatiser toutes ces opérations. Il existe plusieurs méthodes, mais la plus efficace et la plus simple est d’utiliser la fonction d’automatisation de MySQL, qui passe par la création d’un événement (event).

    Principe

    MySQL dispose de la possibilité de création d’événements temporel. En pratique une ou plusieurs requêtes SQL peuvent être exécutées automatiquement à des moments précis. Cela revient à utiliser un cron directement à l’intérieur du serveur.

    Sous réserve de disposer des bons privilèges, n’importe quelle requête peut être exécutée. Cela permet d’automatiser la plupart des taches courantes d’administration.

    Avant de créer un ou plusieurs événements, vous devrez vérifier que l’option est disponible pour votre hébergement. Pour vous assurer que le gestionnaire d’événements est activité il suffit de passer la commande SQL suivante :

    SET GLOBAL event_scheduler = ON;

    Code

    Le code pour la table watchdog :

    CREATE DEFINER=user 
    EVENT `clear_watchdog`
    ON SCHEDULE EVERY 1 DAY STARTS '2026-03-07 08:35:36'
    ON COMPLETION NOT PRESERVE ENABLE
    COMMENT 'Vide la table watchdog tous les jours'
    DO TRUNCATE TABLE watchdog

    Le code est assez simple. Le « user » correspond à votre nom d’utilisateur, il faudra l’adapter en fonction de la configuration de votre serveur.

    Vous devrez donner un nom explicite votre événement. De la même manière il faudra configurer la périodicité de l’événement.
    La dernière ligne contient la requête SQL à exécuter. Elle devra forcément commencer par « do ».

    De nombreux outils permettent de générer automatiquement le code SQL. C’est notamment le cas de phpMyAdmin, qui est assez simple à utiliser. N’hésitez pas à l’utiliser.

    Capture d’écran de l’interface de phpMyAdmin

    Conclusion