Comment puis-je auditer les modifications dans une table MySQL (avec MySQL 4)?
Question
On m'a demandé de vérifier toutes les modifications d'une table MySQL. Est-ce que quelqu'un connaît des outils pour m'aider à faire cela ou dois-je écrire ma propre solution?
Si j’écris moi-même mes auditions, ma première idée consistait à créer un tableau séparé et à créer une chaîne de modifications dans le code PHP. Quelque chose comme " fieldname1 - > oldvalue | nom de champ2 - > oldvalue, ... " ;. Si vous voyez un problème majeur avec cette méthode, merci de me le faire savoir.
La solution
Le seul moyen sûr de capturer toutes les modifications apportées à une table de base de données consiste à utiliser des déclencheurs sur le serveur. Le risque de modifier votre propre code pour auditer les modifications est que les modifications provenant d'une autre application / utilisateur, etc. ne seront pas capturées.
Cela dit, je ne suis pas sûr que MySQL 4 prenne en charge les déclencheurs.
Autres conseils
Utilisez un déclencheur pour détecter les modifications et écrire valeurs before / after dans une table de journal.
Si vous ne parvenez pas à trouver une solution en raison d’un manque de prise en charge des déclencheurs, je vous recommande vivement de ne pas vider les modifications d’un blob de chaîne. Un jour, on vous demandera d'interroger ces données et vous aurez à faire plusieurs analyses de chaînes pour récupérer vos données. (Je parle d'expérience ici.)
La méthode la plus simple consiste simplement à créer une table d'audit avec les mêmes colonnes que la table d'origine, ainsi qu'une colonne de date de modification et un identifiant séquentiel. Ensuite, vous avez toute l’histoire sous la main pour reconstruire le format dont vous avez besoin, et vous pouvez l’interroger à volonté.
SoftTree DB Audit prend en charge MySQL et peut faire ce que vous cherchez: