MySQL Logging

MySQL, PostgreSQL, SQLite
sllnd
Posts: 177
Joined: 2002-10-14 22:33

MySQL Logging

Post by sllnd » 2006-05-22 16:20

Hallo zusammen,

ich habe da mal ne Frage:

Ich möchte gerne das MySQL Logging einstellen, was mit
log-bin = /home/mysql_log/mysql.log auch wunderbar funktioniert.

Die Sache ist nur folgende:

Ich möchte nur SQL-Statements von bestimmten Benutzern sichern.

Ist dies überhaupt möglich?
Oder hat jemand Ideen, wie man soetwas realisieren könnte?

Danke im vorraus!

oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

Re: MySQL Logging

Post by oxygen » 2006-05-22 16:29

Für bestimmten Datenbanken oder Tabellen ist das möglich. Vielleicht reicht dir das ja schon. Nach Usern zu filtern würde dem bin-log Prinzip wiedersprechen, glaub nicht dass das geht.

sllnd
Posts: 177
Joined: 2002-10-14 22:33

Re: MySQL Logging

Post by sllnd » 2006-05-22 17:41

Das Problem besteht darin, dass mehere DB-Benutzer Zugriff auf die selben Datensätze haben und dann im Falle einer Täuschung herausgefunden werden soll, welcher Benutzer was geändert hat.

Gäbe es denn eine andere Möglichkeit soetwas zu realisieren?

User avatar
isotopp
Posts: 471
Joined: 2003-08-21 10:21
Location: Berlin

Re: MySQL Logging

Post by isotopp » 2006-05-24 14:05

SllnD wrote:Das Problem besteht darin, dass mehere DB-Benutzer Zugriff auf die selben Datensätze haben und dann im Falle einer Täuschung herausgefunden werden soll, welcher Benutzer was geändert hat.

Gäbe es denn eine andere Möglichkeit soetwas zu realisieren?
Ja, mit Triggern und einer Logtabelle.

http://mysqldump.azundris.com/archives/ ... aries.html

gibt Beispiele für den Trigger-Einsatz. Du willst stattdessen current_user() im Trigger zum Einsatz bringen. Natürlich brauchst Du den Trigger mit SQL SECURITY INVOKER und nicht SQL SECURITY DEFINER.

sllnd
Posts: 177
Joined: 2002-10-14 22:33

Re: MySQL Logging

Post by sllnd » 2006-05-30 10:59

Gibt es denn noch andere Möglichkeiten zu Loggen ausser "triggern" ?

User avatar
isotopp
Posts: 471
Joined: 2003-08-21 10:21
Location: Berlin

Re: MySQL Logging

Post by isotopp » 2006-05-30 11:39

SllnD wrote:Gibt es denn noch andere Möglichkeiten zu Loggen ausser "triggern" ?
In http://mysqldump.azundris.com/archives/ ... world.html habe ich das Thema Security Management vs. Datenbanken mal ein wenig durchdekliniert. In dem Artikel findest Du die Folien und den Aufschrieb zu dem gleichnamigen Vortrag, den ich dieses Jahr auf der MySQL Users Conference in Santa Clara, CA gehalten habe.

Ich schrieb dort unter anderem
Audit is less useful than you'd think at first glance - most often you'd like to know what was done in terms of the application, but at database level, you'll see only database users (to little information) and database operations (too much information).
Das bedeutet in Deinem Fall, daß die Benutzer in der Anwendung auch als Benutzer in der Datenbank sichtbar sein müssen, damit das Audit überhaupt sinnvolle Informationen liefern kann. Das ist in den meisten Fällen genau nicht der Fall, weil dies exzessiv viele Datenbank-Connections verbraucht.

Wenn doch, dann sind derzeit Trigger der einzige Weg, mit denen man erzwingen kann, daß die Datenbank selektiv Zugriffsinformationen aufzeichnet.

sllnd
Posts: 177
Joined: 2002-10-14 22:33

Re: MySQL Logging

Post by sllnd » 2006-05-30 12:28

Danke für deine schnelle Antwort.

Viel verstanden habe ich davon leider noch nicht.

Was würdest du denn dazu meinen: So viel Aufwand für nur das Loggen von Aktionen, welche in phpMyAdmin durchgeführt werden. Sonst soll nichts geloggt werden.

User avatar
isotopp
Posts: 471
Joined: 2003-08-21 10:21
Location: Berlin

Re: MySQL Logging

Post by isotopp » 2006-05-30 13:28

SllnD wrote:Danke für deine schnelle Antwort.

Viel verstanden habe ich davon leider noch nicht.

Was würdest du denn dazu meinen: So viel Aufwand für nur das Loggen von Aktionen, welche in phpMyAdmin durchgeführt werden. Sonst soll nichts geloggt werden.
Wenn Du nur Aktionen loggen willst, die über PHP MyAdmin erfolgen, ist es doch sehr einfach, PHP MyAdmin zu verändern, daß der das alles loggt.

sllnd
Posts: 177
Joined: 2002-10-14 22:33

Re: MySQL Logging

Post by sllnd » 2006-05-30 16:01

Mhm sehe gerade es gibt seit der Version 2.5 von phpMyAdmin eine Logging Funktion. Perfekt!

Nur hat die schon mal jemand ans laufen bekommen mit der Option, Speicherung in einer Tabelle?

Die Live Protokillierung durch das extra Browser Fenster funktioniert einwandfrei.

In der Konfiguration habe ich folgende Dinge geändert:
$cfg['Servers'][$i]['history'] = 'pma_history ';
$cfg['QueryHistoryDB'] = true;
$cfg['QueryHistoryMax'] = 25;
Ansonsten ist die config.inc.php gleich wie vorher, lediglich die Authorisierung auf "http" gesetllt.

Während meiner Google-Recherche habe ich noch festgestellt, dass man die gewünschte Tabelle selbst erstellen muss. Somit habe ich in der zu protokollierenden Datenbank die Tabelle pma_history erstellt:

Code: Select all

CREATE TABLE `pma_history` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`username` VARCHAR( 64 ) NOT NULL ,
`db` VARCHAR( 64 ) NOT NULL ,
`table` VARCHAR( 64 ) NOT NULL ,
`timevalue` TIMESTAMP NOT NULL ,
`sqlquery` TEXT NOT NULL ,
PRIMARY KEY ( `id` ) ,
INDEX ( `username` , `db` , `table` , `timevalue` )
) TYPE=MyISAM COMMENT='SQL history';
Jedoch wird nichts in diese Tabelle geschrieben.

Jemand schon Erfahrung mit diese Option?