MySQL: Änderung an Datenbank nachverfolgen

  • Folgendes Problem:
    Ich habe eine mySQL-Datenbank, auf welche User unter Angabe ihres Benutzernamens / Passwortes via Interface zugreiffen können und dort einzelne Datensätze bearbeiten/ändern.
    Meine Frage nun:
    Gibt es eine Möglichkeit, zu einem bestimmten Zeitpunkt festzustellen, welcher Benutzer in welchem Datensatz welche Änderung vorgenommen hat?
    Und: Kann ich irgendwie einen automatischen Vergleich eines Back-Ups mit dem Ist-Zustand machen?

  • Da müsstest wohl ein bisschen nach MySQL Auditing suchen. Aber ich befürchte, das dies einer jener Punkte ist, der die Existenz von teuren DBMS rechtfertigt.


    Gibts in MySQL auch ne Programmier oder Skriptsprache? Dann kann man das je nach Bedarf auch mit mässigem Aufwand selber machen.


    Hab mal ein einfaches Auditing für ne Oracle DB in PLSQL programmiert. (War mehr so ne Fingerübung, für Oracle gibts schon Auditing)

    A fine is a tax for doing wrong.
    A tax is a fine for doing well.

  • Wir haben das im DB Shema gelöst...


    Jede Tabelle hat den gleichen Header, da sind sachen wie Benutzer-Identifkation, mutationsdatum usw. drin.


    Wenn eine Tabelle historisiert ist, so wird - bei einer änderung - Der Datensatz kopiert, das Gültig-Ab und Gültig-Bis richtig abgefüllt und in eine history tabelle geschrieben.


    Beispiel:


    Datensatz in History Tabelle:
    Mutations-User: Xoood
    Gültig ab: 31.01.2008
    Gültig bis: 04.05.2008


    Datensatz in "normaler" Tabelle
    Mutations-User: Xoood
    Gültig ab: 04.05.2008
    Gültig bis: 31.12.2299 (ora high-date)


    Ist halt eine anpassung am Interface und an der datenbank nötig, dafür hast du eine saubere sache...


    Bei uns wird dies teilweise mittels Triggers gelöst, das ist auf MySQL afaik nicht möglich? Da müsstest du es halt ausprogrammieren beim mutieren...


    |---> it MUST be a spoon! <---|