Gibt es eine Möglichkeit, Anmeldungen bei MySQL zu überwachen? Ich möchte in der Lage sein, für jeden Mitarbeiter einen Benutzernamen und damit einen Prüfpfad für Anmeldungen zu erstellen. Googeln hat jedoch keine guten Ergebnisse gebracht.
Je mehr wir prüfen können, desto besser. Zumindest wäre es schön zu wissen, wer sich wann angemeldet hat. Es wäre sogar noch besser zu sehen, wer wann welche Abfrage ausgeführt hat. Die Protokolle dienen hauptsächlich dazu, den Kunden mitzuteilen, dass wir sie haben, da die Datenbank potenziell vertrauliche Informationen enthält.
Wenn wir in der Lage sind, die von jedem Benutzer ausgeführten Abfragen (und wann) zu prüfen, können wir natürlich auch besser bestimmen, wer die Ursache für ein Sicherheitsproblem ist, falls eines auftreten sollte.
quelle
Antworten:
Sie möchten wahrscheinlich das allgemeine Abfrageprotokoll verwenden .
Eine wichtige Sache bei der Protokollierung aus Sicherheitsgründen ist, dass ein Angreifer nicht auf das Protokoll zugreifen kann, um Spuren seiner Anwesenheit zu löschen. Ziehen Sie daher nur Dateien zum Anhängen in Betracht .
FWIW in Oracle können wir Protokolle automatisch an ein Remote-Syslog senden , aber ich glaube nicht, dass MySQL diese Funktion noch hat. Vielleicht könnten Sie es mit SNMP vortäuschen, aber ich habe es nicht versucht.
quelle
Die Antwort von @Gauis ist ausgezeichnet. Um es weiter zu ergänzen, können Sie Folgendes tun:
In MySQL 5.1 können jetzt das allgemeine Protokoll und das langsame Abfrageprotokoll als SQL-Tabellen gespeichert werden.
Fügen Sie dies zu /etc/my.cnf hinzu:
Starten Sie MySQL neu
Wenn mysqld dann das allgemeine Protokoll erstellt, wird anstelle einer Textdatei die Tabelle als CSV-Tabelle im Ordner / var / lib / mysql / mysql (mysql-Schemadatenbank) erstellt.
Tun Sie dies einfach, um es zu sehen:
Alle Verbindungen werden sich darin stapeln.
Für Sie ist das nicht sehr nützlich, wenn Sie es abfragen möchten. Es wäre jedes Mal nur ein vollständiger Tabellenscan.
Was ist zu tun ??? Wandle es in Myisam um und indiziere die Tabelle!
Optional können Sie dem Argumentfeld einen Volltextindex hinzufügen.
Ich habe gerade MySQL 5.5.9 auf einem Server eingerichtet und dies ausprobiert. Hier ist das Ergebnis:
Jetzt können Sie nach Zeitstempel abfragen und im Argumentfeld nach bestimmten Token suchen.
Beachten Sie beispielsweise Zeile 4 von SELECT I. Meine Anmeldung wurde im Argumentfeld als aufgezeichnet
[email protected] on
. Sie können diese verfolgen.Was ist, wenn der General zu groß wird? (Glauben Sie mir, es wird sehr schnell zu groß.)
Was ist zu tun ???
Übrigens: Sobald Sie das allgemeine Protokoll offline geschaltet haben, können Sie diese ausführen, um die unterschiedlichen Anmeldungen zu sammeln, die in mysqld etwas bewirkt haben:
Ich habe einen Client mit 3 DB-Servern. Eeach with DB Server verfügt über mehr als 1.000.000.000 (1 Milliarde [Tausende Millionen]) Leitungen. Das obige Skript dauerte ungefähr 2,5 Stunden. Die Tabelle audit_user_host endete mit 27 unterschiedlichen Anmeldungen.
Du solltest gut gehen.
Viel Spaß mit diesem, alle !!!
quelle
Anstatt so viele Dinge manuell zu erledigen, installieren Sie einfach das Audit-Plugin, das mehr Einblick auf Benutzerebene bietet
http://www.mysql.com/products/enterprise/audit.html
Es ist jedoch für ausgewählte kommerzielle MySQL-Editionen verfügbar. Es wäre großartig gewesen, wenn eine MySQL-Gabel auch in der Community-Edition hinzugefügt worden wäre, damit die meisten Benutzer von dieser Funktion profitieren. Andernfalls müssen wir uns auf die von @RolandoMySQLDBA bereitgestellte Lösung verlassen.
quelle
@statichippo
So installieren Sie die Überwachungsprotokollierung unter MySQL.
+ Die Überwachungsprotokollierung unterstützt nur MySQL Enterprise.
+ Sie können die
Überwachungsprotokollierung in der MySQL Community installieren : 1. Kopieren Sie die Datei audit_log.so von Sie können die MySQL Enterprise-Testversion installieren und dann die Datei audit_log.so in die MySQL Community kopieren.
2. Kopieren Sie audit_log.so als / usr / lib64 / mysql / plugin nach plugin_dir, oder Sie können das Plugin-Verzeichnis folgendermaßen anzeigen:
Gehen Sie zur mysql-Konsole: mysql> show global variables wie '% plugin%';
3. Installieren
Sie die Überwachungsprotokollierung wie folgt : mysql> INSTALL PLUGIN audit_log SONAME 'audit_log.so';
mysql> SHOW VARIABLES LIKE 'audit_log%';
4. Ausgabe-Audit-Protokollierung:
tail -f /var/lib/mysql/audit.log
Danke vielmals.
quelle