Hello,
Ich will eigentlich ungern jemandem fremden oder einem fremden Tool meine gesamte DB zur Verfügung stellen. Es könnte ja vielleicht irgend wann die doofe Situation geben, dass es Probleme mit der DB oder dieser Tabelle gibt. Dann wird immer ein Streitpunkt sein, war es das eigene Programm oder event. das externe? Daher mein Versuch / Test mit einer Art "Spiegelung" der eigentlichen "logtabelle" in eine separate DB. Mir ist bewusst, dass dies nicht ideal ist. So aber könnte man dem fremden Tool sagen "Nimmt diese DB und diese Tabelle zum auslesen der Daten" und die original DB würde unberührt bleiben.
Dann ist bei MySQL die Nutzung einer "Stored Routine" das angeratene Mittel. Da muss nur in der DB-Rechtestruktur freigeschaltet werden, dass der User Zugriff auf die Stored Routine hat, nicht auf die eigentlichen Tabellen. Und bei der Erstellung der Stored Routine wird festgelegt, dass diese z.B. mit den Rechten des Erstellers auf die DB zugreift.
Damit sind die datenhaltene und die präsentierende Schicht voneinander getrennt. Und aßerdem kann man in der Stored Routine oder einer Function auch für Selects ein Insert in einer Log-Tabelle erzeugen.
Ich mach das immer so, wenn ich MySQL-DB-Daten für Fremdanwendungen bereit stelle.
Die Stored Routine kann auch Parameter entgegennehmen, so dass man damit die Abfragen auch noch kontrolliert steuern kann.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg