Detaillierte Erläuterung der MySQL-Benutzerrechteverwaltung

Detaillierte Erläuterung der MySQL-Benutzerrechteverwaltung

Vorwort:

Ich bin nicht sicher, ob Sie sich mit der Benutzerrechteverwaltung für Datenbanken auskennen. Als DBA ist die Benutzerrechteverwaltung ein unvermeidlicher Teil Ihrer Arbeit. Insbesondere bei Produktionsdatenbanken sollten die Datenbankbenutzerberechtigungen standardisiert verwaltet werden. Dieser Artikel stellt die relevanten Inhalte der MySQL-Benutzerrechteverwaltung vor.

1. Einführung in die Benutzerrechte

Nachdem wir einen Datenbankbenutzer erstellt haben, können wir noch keine Vorgänge ausführen. Wir müssen dem Benutzer entsprechende Zugriffsberechtigungen zuweisen.

Ein einfaches Verständnis der MySQL-Benutzerberechtigungen besteht darin, dass die Datenbank Benutzern nur erlaubt, Dinge im Rahmen ihrer Rechte zu tun, und die Grenzen nicht überschreiten kann. Wenn Sie beispielsweise nur Auswahlvorgänge ausführen dürfen, können Sie keine Aktualisierungsvorgänge durchführen. Sie dürfen nur von einer bestimmten IP-Adresse aus eine Verbindung zu MySQL herstellen. Von keinem anderen Rechner außer dieser IP-Adresse aus können Sie eine Verbindung zu MySQL herstellen.

In MySQL sind Benutzerberechtigungen ebenfalls in Ebenen unterteilt. Die Berechtigungen, die erteilt werden können, sind wie folgt:

  • Spaltenebene, bezogen auf eine bestimmte Spalte in der Tabelle. Mit der UPDATE-Anweisung können Sie beispielsweise den Wert der Spalte „student_name“ in der Tabelle „students“ aktualisieren.
  • Tabellenebene, bezogen auf alle Daten in einer bestimmten Tabelle. Mit der SELECT-Anweisung können Sie beispielsweise die Berechtigungen aller Daten in der Tabelle „Students“ abfragen.
  • Datenbankebene, bezogen auf alle Tabellen in einer bestimmten Datenbank. Sie können beispielsweise die Berechtigung zum Erstellen einer neuen Tabelle in der vorhandenen Datenbank mytest erteilen.
  • Global, bezogen auf alle Datenbanken in MySQL. Sie können beispielsweise eine vorhandene Datenbank löschen oder eine neue Datenbank erstellen.

Berechtigungsinformationen werden in den Systemtabellen user, db, tables_priv, columns_priv und procs_priv der MySQL-Systembibliothek gespeichert.

  • Benutzertabelle: speichert Benutzerkontoinformationen und Berechtigungen auf globaler Ebene (alle Datenbanken).
  • DB-Tabelle: speichert Berechtigungen auf Datenbankebene, die bestimmen, welche Benutzer von welchen Hosts auf diese Datenbank zugreifen können.
  • tables_priv-Tabelle: speichert Berechtigungen auf Tabellenebene, die bestimmen, welche Benutzer von welchen Hosts auf diese Tabelle in der Datenbank zugreifen können.
  • columns_priv-Tabelle: speichert Berechtigungen auf Spaltenebene, die bestimmen, welche Benutzer von welchen Hosts auf dieses Feld in der Datenbanktabelle zugreifen können.
  • procs_priv-Tabelle: speichert Berechtigungen auf gespeicherter Prozedur- und Funktionsebene.

Weitere Informationen finden Sie in der offiziellen Dokumentation. Die Berechtigungen, die erteilt werden können, sind in der folgenden Tabelle aufgeführt:

Es scheint, dass es viele verschiedene Berechtigungen gibt, die erteilt werden können. Tatsächlich können sie jedoch grob in drei Kategorien unterteilt werden: Daten, Struktur und Verwaltung, die sich grob wie folgt klassifizieren lassen:

2. Tatsächliches Berechtigungsmanagement

Normalerweise verwenden wir die Anweisung grant, um Datenbankbenutzern Berechtigungen zu erteilen. Wir empfehlen, den Benutzer zuerst mit der Anweisung create user zu erstellen und dann die Berechtigungen separat zu erteilen. Schauen wir uns dies anhand eines Beispiels im Detail an:

# Benutzer erstellen. Benutzer „test_user“@„%“ erstellen, identifiziert durch „xxxxxxxx“;

# Globale Berechtigungen GRANT super, select on *.* to 'test_user'@'%';

# Datenbankberechtigungen GRANT select,insert,update,delete,create,alter,execute on `testdb`.* to 'test_user'@'%';

# Tabellenberechtigungen GRANT select,insert auf `testdb`.tb an 'test_user'@'%';

# Spaltenberechtigungen GRANT select (col1), insert (col1, col2) ON `testdb`.mytbl an 'test_user'@'%';

# Beschreibung des GRANT-Befehls:
super,select gibt die spezifischen Berechtigungen an, die erteilt werden sollen.
Mit „ON“ geben Sie an, für welche Bibliotheken und Tabellen die Berechtigungen gelten.
In *.* wird das * am Anfang verwendet, um den Datenbanknamen anzugeben, und das * am Ende, um den Tabellennamen anzugeben.
TO bedeutet, einem Benutzer Berechtigungen zu erteilen.
„test_user“@„%“ bedeutet Test_User-Benutzer. Auf „@“ folgt der eingeschränkte Host, der IP, IP-Segment, Domänenname und % sein kann. % bedeutet „überall“.

#Berechtigungen löschen;

# Zeigen Sie die Berechtigungen eines Benutzers an. Zeigen Sie Berechtigungen für „Testbenutzer“@„%“ an.

# Berechtigungen widerrufen, Löschung von „testdb“ widerrufen.* von „test_user“@„%“;

Die Berechtigungsverwaltung darf nicht außer Acht gelassen werden. Wir können Datenbankbenutzern nicht einfach aus Bequemlichkeit zu viele Berechtigungen erteilen. Insbesondere bei Produktionsdatenbanken sollte eine Berechtigungskontrolle durchgeführt werden. Es wird empfohlen, Programmbenutzern nur grundlegende Berechtigungen wie Hinzufügen, Löschen, Ändern und Abfragen zu erteilen und einzelnen Benutzern nur Abfrageberechtigungen zu erteilen.

Aus Sicherheitsgründen wird empfohlen, folgende Faustregeln zu beachten:

  • Erteilen Sie nur die minimal erforderlichen Berechtigungen, um zu verhindern, dass Benutzer schädliche Aktionen ausführen. Wenn der Benutzer beispielsweise nur eine Abfrage durchführen muss, ist nur die Auswahlberechtigung erforderlich.
  • Beschränken Sie beim Erstellen eines Benutzers den Anmeldehost des Benutzers, normalerweise auf ein bestimmtes IP- oder Intranet-IP-Segment.
  • Legen Sie für jeden Dienst einen eigenen Datenbankbenutzer an. Optimal ist es, wenn ein einzelner Benutzer nur eine einzige Datenbank bedienen kann.
  • Notieren Sie Informationen wie Benutzerberechtigungen jeder Datenbank rechtzeitig, um ein Vergessen zu vermeiden.
  • Bei externen Systemaufrufen sollte ein schreibgeschützter Benutzer konfiguriert werden und die Berechtigungen sollten auf die Tabelle oder Ansicht zugeschnitten sein.
  • Bereinigen Sie regelmäßig nicht benötigte Benutzer, entziehen Sie Berechtigungen oder löschen Sie Benutzer.

Oben finden Sie eine ausführliche Erläuterung der MySQL-Benutzerrechteverwaltung. Weitere Informationen zur MySQL-Benutzerrechteverwaltung finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Implementierung der MySQL-Benutzerrechteverwaltung
  • Detaillierte Erläuterung der Speicherverwaltung der MySQL InnoDB-Speicher-Engine
  • Detaillierte Erläuterung zum Erstellen, Aufrufen und Verwalten von MySQL-gespeicherten Prozeduren
  • Mysql praktische Übungen einfaches Bibliotheksverwaltungssystem

<<:  Bei Verwendung eines Bilds als Beschriftung funktioniert das for-Attribut im IE nicht

>>:  So erreichen Sie ein zentriertes Layout im CSS-Layout

Artikel empfehlen

CSS3 realisiert Partikelanimationseffekte beim Matching von Königen

Beim Codieren werden Sie feststellen, dass viele ...

WeChat Mini-Programm implementiert den Likes-Dienst

In diesem Artikel wird der spezifische Code für d...

Detaillierte Erklärung des Abstandsproblems zwischen IMG-Tags

Grundlegende Analyse des IMG-Tags: In HTML5 beste...

Fallzusammenfassung zur Vue-Komponentenkommunikationsmethode

Inhaltsverzeichnis 1. Übergeordnete Komponente üb...

Ändern Sie die Startzeit von Grub in Ubuntu

Die Online-Suche zum Ändern der Grub-Startzeit be...

Nativer JS-Musikplayer

In diesem Artikelbeispiel wird der spezifische JS...

HTML-Tabellen-Tag-Tutorial (35): spaltenübergreifendes Attribut COLSPAN

In einer komplexen Tabellenstruktur erstrecken si...

Lösung für das Docker-Pull-Timeout

In letzter Zeit ist das Abrufen von Docker-Images...

Lernen Sie MySQL Index Pushdown in fünf Minuten

Inhaltsverzeichnis Vorwort Was ist Index-Pushdown...

So stellen Sie Gitlab mit Docker-Compose bereit

Docker-Compose stellt Gitlab bereit 1. Docker ins...