Ausführliche Erläuterung der MySQL-Benutzerkontenverwaltung und Berechtigungsverwaltung

Ausführliche Erläuterung der MySQL-Benutzerkontenverwaltung und Berechtigungsverwaltung

Vorwort

Die MySQL-Berechtigungstabelle wird beim Starten der Datenbank in den Speicher geladen. Nachdem der Benutzer die Identitätsauthentifizierung bestanden hat, wird auf die entsprechenden Berechtigungen im Speicher zugegriffen. Auf diese Weise kann der Benutzer im Rahmen der Berechtigungen in der Datenbank verschiedene Vorgänge ausführen.

Werfen wir einen Blick auf die ausführliche Einführung.

Das MySQL-Berechtigungssystem ist grob in fünf Ebenen unterteilt:

Globale Ebene

Globale Berechtigungen gelten für alle Datenbanken auf einem bestimmten Server. Diese Berechtigungen werden in der Tabelle mysql.user gespeichert. GRANT ALL ON *.* und REVOKE ALL ON *.* erteilen und widerrufen nur globale Privilegien.

Datenbankebene

Datenbankberechtigungen gelten für alle Objekte in einer bestimmten Datenbank. Diese Berechtigungen werden in den Tabellen mysql.db und mysql.host gespeichert. GRANT ALL ON db_name.* und REVOKE ALL ON db_name.* erteilen und entziehen nur Datenbankberechtigungen.

Tabellenebene

Tabellenberechtigungen gelten für alle Spalten einer bestimmten Tabelle. Diese Berechtigungen werden in der Tabelle mysql.talbes_priv gespeichert. Mit den Befehlen GRANT ALL ON db_name.tbl_name und REVOKE ALL ON db_name.tbl_name können nur Tabellenberechtigungen gewährt und widerrufen werden.

Spaltenebene

Spaltenberechtigungen gelten für eine einzelne Spalte in einer bestimmten Tabelle. Diese Berechtigungen werden in der Tabelle mysql.columns_priv gespeichert. Wenn Sie REVOKE verwenden, müssen Sie dieselben Spalten angeben, die gewährt werden sollen.

Unterprogrammebene

Die Berechtigungen CREATE ROUTINE, ALTER ROUTINE, EXECUTE und GRANT gelten für gespeicherte Routinen. Diese Berechtigungen können auf globaler Ebene oder auf Datenbankebene gewährt werden. Außerdem können diese Berechtigungen, mit Ausnahme von CREATE ROUTINE, auf Unterprogrammebene gewährt werden und werden in der Tabelle mysql.procs_priv gespeichert.

Diese Berechtigungen werden in den folgenden Systemtabellen gespeichert:

mysql.Benutzer
mysql.db
mysql.host
mysql.table_priv
mysql.column_priv

Wenn ein Benutzer eine Verbindung herstellt, überprüft mysqld die Berechtigungen des Benutzers anhand der obigen Tabellen!

1. Zugriff auf die Berechtigungstabelle

Bei den beiden Prozessen des Berechtigungszugriffs verwendet das System die drei wichtigsten Berechtigungstabellen Benutzer, Host und Datenbank in der Datenbank „mysql“ (wird bei der Installation von MySQL erstellt, der Datenbankname lautet „mysql“).

Von diesen drei Tabellen ist die Benutzertabelle die wichtigste, gefolgt von der Datenbanktabelle. Die Hosttabelle wird in den meisten Fällen nicht verwendet.

Die Spalten im Benutzer sind hauptsächlich in vier Teile unterteilt: Benutzerspalte, Berechtigungsspalte, Sicherheitsspalte und Ressourcenkontrollspalte.

Die am häufigsten verwendeten Spalten sind die Benutzerspalte und die Berechtigungsspalte, wobei die Berechtigungsspalte in allgemeine Berechtigung und Verwaltungsberechtigung unterteilt ist. Für Datenbankoperationen werden gewöhnliche Berechtigungen wie select_priv, super_priv usw. verwendet.

Wenn ein Benutzer eine Verbindung herstellt, umfasst der Zugriffsprozess auf die Berechtigungstabelle die folgenden zwei Prozesse:

Bestimmen Sie zunächst anhand der drei Felder Host, Benutzer und Kennwort in der Benutzertabelle, ob die verbundene IP, der Benutzername und das Kennwort in der Tabelle vorhanden sind. Wenn dies der Fall ist, wird die Identitätsauthentifizierung bestanden, andernfalls wird die Verbindung abgelehnt.

Wenn die Authentifizierung erfolgreich ist, werden die Datenbankberechtigungen in der folgenden Reihenfolge der Berechtigungstabelle abgerufen: Benutzer -> Datenbank -> Tabellenpriv -> Spaltenpriv.

In diesen Berechtigungstabellen nimmt der Umfang der Berechtigungen fortlaufend ab, und globale Berechtigungen decken lokale Berechtigungen ab. Der erste Schritt ist leicht zu verstehen. Das folgende Beispiel erläutert den zweiten Schritt im Detail.

Um das Testen zu erleichtern, müssen Sie die Variable sql_mode ändern, andernfalls wird ein Fehler wie folgt gemeldet

MySQL [(keine)]> gewähre Auswahl für *.* an xxx@localhost;
FEHLER 1133 (42000): In der Benutzertabelle kann keine passende Zeile gefunden werden
MySQL [(keine)]> SET SESSION sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';
Abfrage OK, 0 Zeilen betroffen, 2 Warnungen (0,07 Sek.)

MySQL [(keine)]> gewähre Auswahl für *.* an xxx@localhost;
Abfrage OK, 0 Zeilen betroffen, 2 Warnungen (0,10 Sek.)
// Der Standardwert von sql_mode ist NO_AUTO_CREATE_USER (verhindert, dass GRANT automatisch einen neuen Benutzer erstellt, sofern nicht auch ein Kennwort angegeben wird)
SETZEN SIE DIE SESSION sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';

1. Benutzer anlegen

xxx@localhost, und erteilen Sie Select-Berechtigungen für alle Tabellen in allen Datenbanken

Überprüfen Sie zunächst den in der Benutzertabelle angezeigten Berechtigungsstatus

MySQL [mysql]> wähle * vom Benutzer, wobei Benutzer="xxx" und Host='localhost' \G;
*************************** 1. Reihe ***************************
Host: localhost
Benutzer: xxx
Select_priv: Ja
Insert_priv: N
Update_priv: N
Löschpriv: N
Create_priv: N
Drop_priv: N
Reload_priv: N
Shutdown_priv: N
Prozesspriv: N
File_priv: N
Grant_priv: N
Referenzen_priv: N
Index_priv: N
Alter_priv: N
Show_db_priv: N
Super_priv: N
Create_tmp_table_priv: N
Lock_tables_priv: N
Execute_priv: N
Repl_slave_priv: N
Repl_client_priv: N
Create_view_priv: N
Show_view_priv: N
Create_routine_priv: N
Alter_routine_priv: N
Create_user_priv: N
Event_priv: N
Trigger_priv: N
Create_tablespace_priv: N
SSL-Typ: 
ssl_chiffre: 
x509_issuer: 
x509_Betreff: 
max_fragen: 0
max_updates: 0
max_Verbindungen: 0
Max_Benutzerverbindungen: 0
plugin:mysql_native_password
Authentifizierungszeichenfolge: 
password_expired: N
Passwort zuletzt geändert: 2018-12-03 17:34:49
password_lifetime: NULL
Konto gesperrt: Nein

Überprüfen Sie den Berechtigungsstatus der DB-Tabelle erneut

MySQL [mysql]> wähle * aus db, wobei Benutzer="xxx" und Host='localhost' \G;
Leerer Satz (0,03 Sek.)

Es kann festgestellt werden, dass Select_priv: Y in der Benutzertabelle und alle anderen N sind

Es gibt keinen Datensatz in der DB-Tabelle

Das heißt, Benutzer, die für alle Datenbanken die gleichen Berechtigungen haben, müssen nicht in der DB-Tabelle eingetragen werden, sondern müssen lediglich select_priv in der Benutzertabelle auf „Y“ ändern. Mit anderen Worten: Jede Berechtigung in der Benutzertabelle stellt eine Berechtigung für alle Datenbanken dar.

2. Ändern Sie die Berechtigungen für xxx@localhost, um nur Berechtigungen für alle Tabellen in der Datenbank db1 auszuwählen.

MySQL [mysql]> Datenbank db1 erstellen;
Abfrage OK, 1 Zeile betroffen (0,01 Sek.)

MySQL [mysql]> re^C
MySQL [mysql]> Auswahl auf *.* von xxx@localhost widerrufen;
Abfrage OK, 0 Zeilen betroffen, 1 Warnung (0,06 Sek.)

MySQL [mysql]> gewähre Auswahl auf db1.* für xxx@localhost;
Abfrage OK, 0 Zeilen betroffen, 1 Warnung (0,09 Sek.)

MySQL [mysql]> wähle * vom Benutzer, wobei Benutzer='xxx'\G;
*************************** 1. Reihe ***************************
Host: localhost
Benutzer: xxx
Select_priv: N
Insert_priv: N
Update_priv: N
Löschpriv: N
Create_priv: N
Drop_priv: N
Reload_priv: N
MySQL [mysql]> wähle * aus db, wobei Benutzer='xxx'\G;
*************************** 1. Reihe ***************************
Host: localhost
Db: db1
Benutzer: xxx
Select_priv: Ja
Insert_priv: N
Update_priv: N
Löschpriv: N
Create_priv: N
Drop_priv: N
Grant_priv: N
Referenzen_priv: N
Index_priv: N
Alter_priv: N
Create_tmp_table_priv: N
Lock_tables_priv: N
Create_view_priv: N
Show_view_priv: N
Create_routine_priv: N
Alter_routine_priv: N
Execute_priv: N
Event_priv: N
Trigger_priv: N

Zu diesem Zeitpunkt wird festgestellt, dass select_priv in der Benutzertabelle zu „N“ wird und ein Datensatz mit db als xxx zur db-Tabelle hinzugefügt wird. Das heißt, wenn bestimmte Berechtigungen nur einigen Datenbanken gewährt werden, bleibt die entsprechende Berechtigungsspalte in der Benutzertabelle auf „N“ und die spezifischen Datenbankberechtigungen werden in die Datenbanktabelle geschrieben. Der Berechtigungsmechanismus für Tabellen und Spalten ähnelt dem von db.

3. tables_priv zeichnet Tabellenberechtigungen auf

MySQL [db1]> Tabelle erstellen t1 (ID int (10), Name char (10));
Abfrage OK, 0 Zeilen betroffen (0,83 Sek.)

MySQL [db1]> gewähre mmm@localhost die Auswahl von db1.t1;
Abfrage OK, 0 Zeilen betroffen, 2 Warnungen (0,06 Sek.)

MySQL [mysql]> wähle * vom Benutzer, wobei Benutzer='mmm'\G;
*************************** 1. Reihe ***************************
Host: localhost
Benutzer: mmm
Select_priv: N
Insert_priv: N
Update_priv: N
Löschpriv: N
Create_priv: N
Drop_priv: N
Reload_priv: N
...

MySQL [mysql]> wähle * aus db, wobei Benutzer='mmm'\G;
Leerer Satz (0,00 Sek.)


MySQL [mysql]> wähle * aus tables_priv, wobei user='mmm'\G;
*************************** 1. Reihe ***************************
Host: localhost
Db: db1
Benutzer: mmm
Tabellenname: t1
Gewährer: root@localhost
Zeitstempel: 0000-00-00 00:00:00
Table_priv: Auswählen
Column_priv: 
1 Zeile im Satz (0,00 Sek.)

FEHLER: 
Keine Abfrage angegeben

MySQL [mysql]> wähle * aus columns_priv where user='mmm'\G;
Leerer Satz (0,00 Sek.)

Sie können sehen, dass der Tabelle „tables_priv“ ein Datensatz hinzugefügt wurde, in der Tabelle „columns_priv“ der Benutzerdatenbank jedoch kein Datensatz vorhanden ist.

Aus dem obigen Beispiel können wir ersehen, dass, wenn ein Benutzer die Berechtigungsauthentifizierung besteht und eine Berechtigungszuweisung durchführt, die Berechtigungszuweisung in der Reihenfolge ==Benutzer -> Datenbank -> Tabellen_Priv -> Spalten_Priv== durchgeführt wird, d. h., der Benutzer der globalen Berechtigungstabelle wird zuerst geprüft. Wenn die entsprechende Berechtigung im Benutzer „Y“ ist, ist die Berechtigung dieses Benutzers für alle Datenbanken „Y“ und db, Tabellen_Priv und Spalten_Priv werden nicht mehr geprüft; wenn sie „N“ ist, wird die spezifische Datenbank, die diesem Benutzer entspricht, in der Datenbanktabelle geprüft und die Berechtigung „Y“ in db wird erhalten; wenn die entsprechende Berechtigung in db „N“ ist, werden die Berechtigungen in Tabellen_Priv und Spalten_Priv nacheinander geprüft. Wenn alle „N“ sind, wird beurteilt, dass die Berechtigung nicht vorhanden ist.

2. Kontoverwaltung

Gewähren

Mit Grant können nicht nur Benutzer autorisiert, sondern auch erstellt werden.

Autorisierungssyntax:

Gewähren Sie dem durch „Passwort“ identifizierten Benutzer@Host die Berechtigungsliste für Bibliotheksname.Tabellenname.

Erstellen Sie den Benutzer p1 mit Berechtigungen zum Ausführen aller Berechtigungen für alle Datenbanken und können Sie sich nur lokal verbinden

MySQL [mysql]> gewähre p1@localhost alle Berechtigungen für *.*;
Abfrage OK, 0 Zeilen betroffen, 2 Warnungen (0,03 Sek.)

MySQL [mysql]> wähle * vom Benutzer, wobei Benutzer = "p1" \ G
*************************** 1. Reihe ***************************
Host: localhost
Benutzer: p1
Select_priv: Ja
Insert_priv: Y
Update_priv: J
Delete_priv: J
Create_priv: Ja
Drop_priv: J
Reload_priv: J
Shutdown_priv: Ja
Prozesspriv: Y
File_priv: Y
Grant_priv: N
Referenzen_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Ja
Super_priv: Y
Create_tmp_table_priv: Ja
Lock_tables_priv: Ja
Execute_priv: Ja
Repl_slave_priv: Ja
Repl_client_priv: Ja
Create_view_priv: Ja
Show_view_priv: Ja
Create_routine_priv: Ja
Alter_routine_priv: Y
Create_user_priv: Ja
Event_priv: J
Trigger_priv: Ja
Create_tablespace_priv: Ja
SSL-Typ: 
ssl_chiffre: 
x509_issuer: 
x509_Betreff: 
max_fragen: 0
max_updates: 0
max_Verbindungen: 0
Max_Benutzerverbindungen: 0
plugin:mysql_native_password
Authentifizierungszeichenfolge: 
password_expired: N
Passwort zuletzt geändert: 2018-12-03 18:11:01
password_lifetime: NULL
Konto gesperrt: Nein
1 Zeile im Satz (0,00 Sek.)

Mit Ausnahme der Berechtigung „grant_priv“ sind alle Berechtigungen in der Benutzertabelle „Y“.

Fügen Sie p1 Berechtigungen hinzu

MySQL [mysql]> gewähre p1@localhost alle Privilegien für *.* mit der Grant-Option;
Abfrage OK, 0 Zeilen betroffen, 1 Warnung (0,03 Sek.)

MySQL [mysql]> wähle * vom Benutzer, wobei Benutzer = "p1" \ G
*************************** 1. Reihe ***************************
Host: localhost
Benutzer: p1
Select_priv: Ja
Insert_priv: Y
Update_priv: J
Delete_priv: J
Create_priv: Ja
Drop_priv: J
Reload_priv: J
Shutdown_priv: Ja
Prozesspriv: Y
File_priv: Y
Grant_priv: Ja
Referenzen_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Ja
Super_priv: Y
Create_tmp_table_priv: Ja
Lock_tables_priv: Ja
Execute_priv: Ja
Repl_slave_priv: Ja
Repl_client_priv: Ja
Create_view_priv: Ja
Show_view_priv: Ja
Create_routine_priv: Ja
Alter_routine_priv: Y
Create_user_priv: Ja
Event_priv: J
Trigger_priv: Ja
Create_tablespace_priv: Ja
SSL-Typ: 
ssl_chiffre: 
x509_issuer: 
x509_Betreff: 
max_fragen: 0
max_updates: 0
max_Verbindungen: 0
Max_Benutzerverbindungen: 0
plugin:mysql_native_password
Authentifizierungszeichenfolge: 
password_expired: N
Passwort zuletzt geändert: 2018-12-03 18:11:01
password_lifetime: NULL
Konto gesperrt: Nein
1 Zeile im Satz (0,00 Sek.)

Legen Sie ein Passwort fest, um Berechtigungen zu erteilen

MySQL [mysql]> gewähre p1@localhost, identifiziert durch „123“, mit der Gewährungsoption alle Berechtigungen für *.*.
Abfrage OK, 0 Zeilen betroffen, 2 Warnungen (0,01 Sek.)

MySQL [mysql]> wähle * vom Benutzer, wobei Benutzer = "p1" \ G
*************************** 1. Reihe ***************************
Host: localhost
Benutzer: p1
Select_priv: Ja
Insert_priv: Y
Update_priv: J
Delete_priv: J
Create_priv: Ja
Drop_priv: J
Reload_priv: J
Shutdown_priv: Ja
Prozesspriv: Y
File_priv: Y
Grant_priv: Ja
Referenzen_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Ja
Super_priv: Y
Create_tmp_table_priv: Ja
Lock_tables_priv: Ja
Execute_priv: Ja
Repl_slave_priv: Ja
Repl_client_priv: Ja
Create_view_priv: Ja
Show_view_priv: Ja
Create_routine_priv: Ja
Alter_routine_priv: Y
Create_user_priv: Ja
Event_priv: J
Trigger_priv: Ja
Create_tablespace_priv: Ja
SSL-Typ: 
ssl_chiffre: 
x509_issuer: 
x509_Betreff: 
max_fragen: 0
max_updates: 0
max_Verbindungen: 0
Max_Benutzerverbindungen: 0
plugin:mysql_native_password
Authentifizierungszeichenfolge: *23AE809DDACAF96AF0FD78ED04B6A265E05AA257
password_expired: N
Passwort zuletzt geändert: 2018-12-03 18:14:40
password_lifetime: NULL
Konto gesperrt: Nein
1 Zeile im Satz (0,00 Sek.)

In Datenbanken ab Version 5.7 wird das Kennwortfeld in authentication_string geändert.

Erstellen Sie einen neuen Benutzer p2, der sich von jeder IP-Adresse aus verbinden kann. Der Benutzer hat die Rechte, alle Tabellen in der Datenbank db1 auszuwählen, zu aktualisieren, einzufügen und zu löschen. Das anfängliche Passwort lautet „123“.

MySQL [mysql]> Berechtigung zum Auswählen, Einfügen, Aktualisieren und Löschen auf db1.* für ‚p2‘@‚%‘, gekennzeichnet durch ‚123‘;
Abfrage OK, 0 Zeilen betroffen, 1 Warnung (0,01 Sek.)

MySQL [mysql]> wähle * vom Benutzer, wobei Benutzer='p2'\G;
*************************** 1. Reihe ***************************
Gastgeber: %
Benutzer: p2
Select_priv: N
Insert_priv: N
Update_priv: N
Löschpriv: N
Create_priv: N
Drop_priv: N
Reload_priv: N
Shutdown_priv: N
...
Create_tablespace_priv: N
SSL-Typ: 
ssl_chiffre: 
x509_issuer: 
x509_Betreff: 
max_fragen: 0
max_updates: 0
max_Verbindungen: 0
Max_Benutzerverbindungen: 0
plugin:mysql_native_password
Authentifizierungszeichenfolge: *23AE809DDACAF96AF0FD78ED04B6A265E05AA257
password_expired: N
Passwort zuletzt geändert: 2018-12-03 18:20:44
password_lifetime: NULL
Konto gesperrt: Nein
1 Zeile im Satz (0,00 Sek.)

FEHLER: 
Keine Abfrage angegeben

MySQL [mysql]> wähle * aus db, wobei Benutzer='p2'\G;
*************************** 1. Reihe ***************************
Gastgeber: %
Db: db1
Benutzer: p2
Select_priv: Ja
Insert_priv: Y
Update_priv: J
Delete_priv: J
Create_priv: N
Drop_priv: N
Grant_priv: N
Referenzen_priv: N
Index_priv: N
Alter_priv: N
Create_tmp_table_priv: N
Lock_tables_priv: N
Create_view_priv: N
Show_view_priv: N
Create_routine_priv: N
Alter_routine_priv: N
Execute_priv: N
Event_priv: N
Trigger_priv: N
1 Zeile im Satz (0,00 Sek.)

Die Berechtigungen in der Benutzertabelle sind alle „N“, und die in der Datenbanktabelle hinzugefügten Datensatzberechtigungen sind alle „Y“. Auf diese Weise werden Benutzern nur die entsprechenden Berechtigungen erteilt, ohne dass ihnen übermäßige Berechtigungen gewährt werden.

Die IP-Einschränkung in diesem Beispiel erlaubt allen IPs die Verbindung und ist daher auf "%" gesetzt. In der MySQL-Datenbank erfolgt die Steuerung über das Hostfeld der Benutzertabelle. Dem Host können die folgenden Wertetypen zugewiesen werden.

Hinweis: Der Wert von Host in der Benutzertabelle der MySQL-Datenbank ist „%“ oder leer. Dies bedeutet, dass alle externen IPs eine Verbindung herstellen können, der lokale Server „localhost“ jedoch nicht eingeschlossen ist. Wenn Sie den lokalen Server einschließen möchten, müssen Sie daher „localhost“ separat Berechtigungen erteilen.

Gewähren Sie dem Benutzer p3@% Super-, Prozess- und Dateiberechtigungen.

MySQL [mysql]> gewähre 'p3'@'%' die Berechtigung „super, process, file“ auf db1.*;
FEHLER 1221 (HY000): Falsche Verwendung von DB GRANT und GLOBAL PRIVILEGES


MySQL [mysql]> gewähre 'p3'@'%' die Berechtigung „super, process, file“ auf *.*;
Abfrage OK, 0 Zeilen betroffen (0,03 Sek.)

Bei diesen Berechtigungen handelt es sich um Verwaltungsberechtigungen, Sie können also keine Datenbank angeben. Auf das "on" muss ein *.* folgen, sonst wird eine Fehlermeldung angezeigt, wie oben dargestellt.

Wofür sind diese Berechtigungen?

Prozess: Mit diesem Privileg kann der Benutzer die Befehle SHOW PROCESSLIST und KILL ausführen. Standardmäßig kann jeder Benutzer den Befehl SHOW PROCESSLIST ausführen, allerdings können nur die Prozesse dieses Benutzers abgefragt werden.

Nur Benutzer mit Dateiberechtigung können die Operationen „select ..into outfile“ und „load data infile...“ ausführen. Erteilen Sie die Datei-, Prozess- und Superberechtigungen jedoch nicht an andere Konten als Administratoren, da dies ein ernstes Sicherheitsrisiko darstellt.

Das Superprivileg erlaubt dem Benutzer, jede Abfrage zu beenden, die SET-Anweisung globaler Variablen zu ändern und CHANGE MASTER, PURGE MASTER LOGS zu verwenden.

Noch ein besonderer

Nutzungsberechtigungen

Verbindungsberechtigungen (Anmeldung), erstellen Sie einen Benutzer, und die Nutzungsberechtigung wird ihm automatisch erteilt (standardmäßig erteilt).

Mit dieser Berechtigung können Sie sich nur bei der Datenbank anmelden und keine Vorgänge ausführen. Die Nutzungsberechtigung kann nicht widerrufen werden, d. h. ein Benutzer kann nicht widerrufen oder gelöscht werden.

Kontoberechtigungen anzeigen

Nachdem das Konto erstellt wurde, können Sie die Berechtigungen anzeigen, indem Sie den folgenden Befehl ausführen:

Berechtigungen für Benutzer@Host anzeigen;
MySQL [mysql]> Berechtigungen für p2@'%' anzeigen;
+-------------------------------------------------------------+
| Zuschüsse für p2@% |
+-------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'p2'@'%' |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `db1`.* TO 'p2'@'%' |
+-------------------------------------------------------------+
2 Zeilen im Satz (0,00 Sek.)

Ändern der Kontoberechtigungen

Erstellen Sie ein Benutzerkonto p4 mit ausgewählten Berechtigungen für alle Tabellen in db1

MySQL [mysql]> gewähre p4@'%' die Auswahl auf db1.*;
Abfrage OK, 0 Zeilen betroffen, 1 Warnung (0,01 Sek.)

MySQL [mysql]> Berechtigungen für p4@'%' anzeigen;
+-------------------------------------+
| Zuschüsse für p4@% |
+-------------------------------------+
| GRANT USAGE ON *.* TO 'p4'@'%' |
| GRANT SELECT ON `db1`.* TO 'p4'@'%' |
+-------------------------------------+
2 Zeilen im Satz (0,00 Sek.)

Löschberechtigung hinzufügen

MySQL [mysql]> Berechtigung zum Löschen von db1.* an p4@'%' gewähren;
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

MySQL [mysql]> Berechtigungen für p4@'%' anzeigen;
+---------------------------------------------+
| Zuschüsse für p4@% |
+---------------------------------------------+
| GRANT USAGE ON *.* TO 'p4'@'%' |
| GRANT SELECT, DELETE ON `db1`.* TO 'p4'@'%' |
+---------------------------------------------+
2 Zeilen im Satz (0,00 Sek.)

Mit vorhandenen Auswahlberechtigungen zusammenführen

Entfernen Sie die Löschberechtigung

Mit der Widerrufsanweisung können die erteilten Berechtigungen widerrufen werden.

MySQL [mysql]> Berechtigungen für p4@'%' anzeigen;
+---------------------------------------------+
| Zuschüsse für p4@% |
+---------------------------------------------+
| GRANT USAGE ON *.* TO 'p4'@'%' |
| GRANT SELECT, DELETE ON `db1`.* TO 'p4'@'%' |
+---------------------------------------------+
2 Zeilen im Satz (0,00 Sek.)

MySQL [mysql]> Löschung auf db1.* von p4@'%' widerrufen;
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

MySQL [mysql]> Berechtigungen für p4@'%' anzeigen;
+-------------------------------------+
| Zuschüsse für p4@% |
+-------------------------------------+
| GRANT USAGE ON *.* TO 'p4'@'%' |
| GRANT SELECT ON `db1`.* TO 'p4'@'%' |
+-------------------------------------+
2 Zeilen im Satz (0,00 Sek.)

Kann die Nutzung widerrufen werden?

MySQL [mysql]> Auswahl auf db1.* von p4@'%' widerrufen;
Abfrage OK, 0 Zeilen betroffen (0,02 Sek.)

MySQL [mysql]> Berechtigungen für p4@'%' anzeigen;
+--------------------------------+
| Zuschüsse für p4@% |
+--------------------------------+
| GRANT USAGE ON *.* TO 'p4'@'%' |
+--------------------------------+
1 Zeile im Satz (0,00 Sek.)

MySQL [mysql]> Nutzung von db1.* von p4@'%' widerrufen;
FEHLER 1141 (42000): Für den Benutzer „p4“ auf dem Host „%“ ist keine solche Berechtigung definiert.

Die Nutzungsberechtigung kann nicht widerrufen werden, das heißt, der Widerruf eines Benutzers kann nicht zur Löschung des Benutzers führen.

Um ein Konto vollständig zu löschen, können Sie drop user verwenden.

Benutzer p4@'%' löschen;

Kontoressourcenbeschränkungen

Beim Erstellen eines MySQL-Kontos gibt es eine weitere Option namens Kontoressourcenlimit. Der Zweck dieser Option besteht darin, die Ressourcenlimits zu begrenzen, die jedes Konto tatsächlich hat. Die „Ressourcen“ umfassen hier hauptsächlich:

max_queries_per_hour count: Die Anzahl der Abfragen, die pro Stunde von einem einzelnen Konto ausgeführt werden
max_upodates_per_hour count: Die Anzahl der pro Stunde für ein einzelnes Konto durchgeführten Aktualisierungen
max_connections_per_hour count: Die Anzahl der Verbindungen eines einzelnen Kontos zum Server pro Stunde
max_user_connections count: Die Anzahl der gleichzeitigen Verbindungen eines einzelnen Kontos zum Server

Beachten:

Fügen Sie Benutzer oder Berechtigungen hinzu und verwenden Sie mysql> flush privileges;, um die Berechtigungen zu aktualisieren.

Spezifische Berechtigungen finden Sie in der Dokumentation der offiziellen Website

https://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • So verwenden Sie DCL zum Verwalten von Benutzern und Steuern von Berechtigungen in MySQL
  • So erstellen Sie Benutzer und verwalten Berechtigungen in MySQL
  • Beispielanalyse der MySQL-Benutzerrechteverwaltung
  • Detaillierte Erläuterung der MySQL-Benutzer- und Berechtigungsverwaltung
  • Detaillierte Erläuterung der Methoden zur Überprüfung und Verwaltung von MySQL-Benutzerrechten
  • Detaillierte Erläuterung der MySQL-Benutzerrechteverwaltung
  • Zusammenfassung der grundlegenden Methoden zur Benutzer- und Berechtigungsverwaltung in MySQL
  • Detaillierte Erläuterung der MySQL-Benutzerrechteverwaltung

<<:  Detaillierte Erklärung zum Erstellen einer Phalcon-Umgebung unter einem Nginx-Server auf einem CentOS7-System

>>:  Konfigurationsmethode für die VMware Kali-Umgebung virtueller Maschinen

Artikel empfehlen

So positionieren Sie die Kopfzeile mithilfe des CSS-Sticky-Layouts oben

Anwendungsszenarien: Eine der neuen Anforderungen...

Optimierung von JavaScript und CSS zur Verbesserung der Website-Leistung

<br /> Im ersten und zweiten Teil haben wir ...

Einführung in Linux-Komprimierungs- und Dekomprimierungsbefehle

Inhaltsverzeichnis Gängige Komprimierungsformate:...

MP3- oder Flashplayer-Code auf der Webseite abspielen

Code kopieren Der Code lautet wie folgt: <Obje...

Lösung für das Problem der Zeilenhöhe der Elementtabellenkopfzeile

Inhaltsverzeichnis Vorwort 1. Ursache des Problem...

Detaillierte Diskussion der InnoDB-Sperren (Record-, Gap-, Next-Key-Sperre)

Die Datensatzsperre sperrt einen einzelnen Indexd...

Optimierung der Frontend-Leistung von Websites: JavaScript und CSS

Ich habe einen Artikel des Yahoo-Teams über die O...

Über MySQL innodb_autoinc_lock_mode

Der Parameter innodb_autoinc_lock_mode steuert da...

MySql-Entwicklung einer automatischen Synchronisierungstabellenstruktur

Schwachstellen bei der Entwicklung Während des En...

CSS-Beispielcode zum Zeichnen eines Lutschers

Hintergrund: Machen Sie jeden Tag ein wenig Forts...