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?
MySQL: Änderung an Datenbank nachverfolgen
-
-
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)
-
SHOW PROCESSLIST
Damit kriegst du die aktuellen verbindungen / befehle
-
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.2008Datensatz 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...