MySQL verwendet Init-Connect, um die Implementierung der Zugriffsüberwachungsfunktion zu verbessern

MySQL verwendet Init-Connect, um die Implementierung der Zugriffsüberwachungsfunktion zu verbessern

Die MySQL-Verbindung muss zuerst über Init-Connect initialisiert und dann mit der Instanz verbunden werden.

Wir nutzen dies aus und implementieren die DB-Zugriffs-Audit-Funktion, indem wir während der Init-Connect-Erstellung die Thread-ID, den Benutzernamen und die Benutzeradresse des Benutzers aufzeichnen.

Implementierungsschritte

1. Erstellen Sie eine Bibliothekstabelle für die Prüfung.

Um Konflikte mit Business-Bibliotheken zu vermeiden, legen Sie Ihre eigene Bibliothek separat an:

#Datenbanktabelle erstellen Code create database db_monitor;
verwenden Sie db_monitor;
CREATE TABLE Zugriffsprotokoll
(thread_id int(11) DEFAULT NULL, #Prozess-ID
 log_time datetime default null, #Anmeldezeit localname varchar(50) DEFAULT NULL, #Anmeldename mit detaillierter IP
 matchname varchar(50) DEFAULT NULL, #Login-Benutzerschlüssel idx_log_time(log_time)
)ENGINE=InnoDB STANDARD-CHARSET=utf8; 

2. Konfigurieren Sie die Init-Connect-Parameter

Dieser Parameter kann dynamisch angepasst werden. Bitte beachten Sie auch, dass dieser unbedingt in die Konfigurationsdatei my.cnf eingetragen werden muss, da er sonst nach dem nächsten Neustart ungültig wird.

mysql> Variablen wie „init_connect%“ anzeigen;
+---------------+-------+
| Variablenname | Wert |
+---------------+-------+
| init_connect | |
+---------------+-------+
1 Zeile im Set (0,00 Sek.

mysql> setze global init_connect = 'insert into db_monitor.accesslog(thread_id,log_time,localname,matchname) values(connection_id(),now(),user(),current_user());'; 

3. Erteilen Sie normalen Benutzern Einfügeberechtigungen für die Accesslog-Tabelle

Dieser Punkt ist wichtig

Dieser Parameter ist nur für normale Benutzer wirksam und funktioniert nicht für Benutzer mit Superberechtigungen.

Wenn Sie ein normaler Benutzer sind, müssen Sie nach dem Hinzufügen dieser Funktion eine Autorisierung durchführen:

gewähre dem Benutzer@'xx.xx.xx.%' das Einfügen in db_monitor.accesslog;

Die Folge einer fehlenden Autorisierung ist, dass die Verbindung zur Datenbank fehlschlägt:

Benutzer, die keine Einfügeberechtigung für die Accesslog-Tabelle haben:

mysql> Datenbanken anzeigen;
FEHLER 2006 (HY000): MySQL-Server ist weg
Keine Verbindung. Versuch, die Verbindung wiederherzustellen …
Verbindungs-ID: 7
Aktuelle Datenbank: *** KEINE ***

FEHLER 1184 (08S01): Abgebrochene Verbindung 7 zur Datenbank: „nicht verbunden“ Benutzer: „Benutzer2“ Host: „localhost“ (Befehl „init_connect“ fehlgeschlagen) 

4. Audit-Funktion überprüfen

Ein Benutzer hat eine Tabelle in der Testdatenbank gelöscht. Mal sehen, ob wir den Benutzer mithilfe des Binlog-Protokolls verfolgen können:


Binlog anzeigen:


Es ist ersichtlich, welcher Benutzer die Operation durchgeführt hat. Damit ist die Prüfung abgeschlossen.

Der obige Artikel über die Verwendung von init-connect zur Verbesserung der Zugriffsüberwachungsfunktion in MySQL ist alles, was ich mit Ihnen teilen möchte. Ich hoffe, er kann Ihnen als Referenz dienen und ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • Die Audit-Funktion von Spring Data JPA prüft Datenbankänderungen
  • Beispielcode für die AuditorAware-Auditing-Funktion basierend auf Spring Data
  • Lösen Sie das Problem der SpringdataJPA-Unterstützung für natives SQL
  • SpringDataJPA native SQL-Abfrage-Kapselungsoperation
  • Analyse der Audit-Funktion von Spring Data JPA: Audit-Datenbankänderungen

<<:  Öffnen Sie die App auf der h5-Seite in Vue (bestimmen Sie, ob es sich um Android oder Apple handelt).

>>:  Tipps zum Organisieren von Zeichenfolgen in Linux

Artikel empfehlen

Was ist ZFS? Gründe für die Verwendung von ZFS und seine Funktionen

Geschichte von ZFS Das Z-Dateisystem (ZFS) wurde ...

Docker nginx implementiert einen Host zum Bereitstellen mehrerer Sites

Die virtuelle Maschine, die ich von einer bestimm...

Zusammenfassung mehrerer häufig verwendeter CentOS7-Images basierend auf Docker

Inhaltsverzeichnis 1 Docker installieren 2 Konfig...

So installieren Sie das Pip-Paket unter Linux

1. Laden Sie das Pip-Installationspaket entsprech...

Reiner CSS3-Code zur Implementierung einer laufenden Uhr

Wirkung der OperationCode-Implementierung html &l...

Zusammenfassung der MySQL-Funktionsmethode LOAD_FILE()

In MySQL liest die Funktion LOAD_FILE() eine Date...

MySQL 5.7 MySQL-Befehlszeilenclient - Befehlsdetails

MySQL 5.7 MySQL-Befehlszeilenclient mit Befehlen ...

Vergleich der JS-Array-Loop-Methode und der Effizienzanalyse

Array-Methoden JavaScript bietet viele Array-Meth...

MySQL Router implementiert MySQL Lese-/Schreibtrennung

Inhaltsverzeichnis 1. Einleitung 2. MySQL-Router ...

Tutorial zur Installation von VMware WorkStation 14 Pro unter Ubuntu 17.04

In diesem Artikel wird die spezifische Methode zu...

Gutes Website-Copywriting und gute Benutzererfahrung

Das Betrachten einer Website ist eigentlich wie di...

Grafisches Tutorial zur Installation und Konfiguration von mysql5.7.20 (Mac)

Grafisches Tutorial zur Installation und Konfigur...