Wie können Sie in MySQL die Berechtigungen anzeigen, die einem Benutzer erteilt wurden? Die den Benutzern gewährten Berechtigungen können in Berechtigungen auf globaler Ebene, Berechtigungen auf Datenbankebene, Berechtigungen auf Tabellenebene, Berechtigungen auf Spaltenebene und Berechtigungen auf Unterprogrammebene unterteilt werden. Die spezifischen Kategorien sind wie folgt: 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.tables_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. 1: Lassen Sie uns dann ein Testkonto erstellen und Berechtigungen auf globaler Ebene erteilen . Wie unten dargestellt: mysql> grant select,insert auf *.* an test@'%', identifiziert durch 'test'; Abfrage OK, 0 Zeilen betroffen (0,01 Sek.) mysql> Berechtigungen leeren; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) MySQL> Anschließend können Sie mit den folgenden beiden Methoden die zum Test erteilten Berechtigungen abfragen. Wie unten dargestellt: mysql> Berechtigungen für Test anzeigen; +-----------------------------------------------------------------------------------------------------------+ | Zuschüsse für test@% | +-----------------------------------------------------------------------------------------------------------+ | GRANT SELECT, INSERT ON *.* TO 'test'@'%' IDENTIFIZIERT DURCH PASSWORT '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' | +-----------------------------------------------------------------------------------------------------------+ 1 Zeile im Satz (0,00 Sek.) mysql> wähle * aus mysql.user, wobei Benutzer='test'\G; *************************** 1. Reihe *************************** Gastgeber: % Benutzer: test Passwort: *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29 Select_priv: Ja Insert_priv: Y 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 1 Zeile im Satz (0,04 Sek.) FEHLER: Keine Abfrage angegeben MySQL> 2: Lassen Sie uns dann ein Testkonto erstellen und Berechtigungen auf Datenbankebene erteilen. Wie unten dargestellt: mysql> Benutzertest löschen; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) mysql> gewähre select,insert,update,delete auf MyDB.* an test@'%', identifiziert durch 'test'; Abfrage OK, 0 Zeilen betroffen (0,01 Sek.) MySQL> mysql> select * from mysql.user where user='test'\G; --Sie sehen, dass keine Autorisierung vorliegt. mysql> wähle * aus mysql.db, wobei Benutzer='test'\G; *************************** 1. Reihe *************************** Gastgeber: % Datenbank: MeineDB Benutzer: test 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,04 Sek.) FEHLER: Keine Abfrage angegeben MySQL> mysql> Berechtigungen für Test anzeigen; +------------------------------------------------------------------------------------------------------------------+ | Zuschüsse für test@% | +------------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* AN 'test'@'%' IDENTIFIZIERT DURCH PASSWORT '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' | | GRANT SELECT, INSERT, UPDATE, DELETE ON `MyDB`.* TO 'test'@'%' | +------------------------------------------------------------------------------------------------------------------+ 2 Zeilen im Satz (0,00 Sek.) MySQL> 3: Lassen Sie uns dann ein Testkonto erstellen und Berechtigungen auf Tabellenebene erteilen. Wie unten dargestellt: mysql> Benutzertest löschen; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) mysql> Berechtigungen leeren; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) mysql> gewähre alles auf MyDB.kkk an test@'%', identifiziert durch 'test'; Abfrage OK, 0 Zeilen betroffen (0,01 Sek.) MySQL> mysql> Berechtigungen für Test anzeigen; +------------------------------------------------------------------------------------------------------------------+ | Zuschüsse für test@% | +------------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* AN 'test'@'%' IDENTIFIZIERT DURCH PASSWORT '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' | | GEWÄHREN SIE 'test'@'%' ALLE PRIVILEGIEN FÜR `MyDB`.`kkk` | +------------------------------------------------------------------------------------------------------------------+ 2 Zeilen im Satz (0,00 Sek.) mysql> wähle * aus mysql.tables_priv\G; *************************** 1. Reihe *************************** Gastgeber: % Datenbank: MeineDB Benutzer: test Tabellenname: kkk Gewährer: root@localhost Zeitstempel: 0000-00-00 00:00:00 Table_priv: Auswählen, Einfügen, Aktualisieren, Löschen, Erstellen, Löschen, Verweise, Index, Ändern, Ansicht erstellen, Ansicht anzeigen, Trigger Column_priv: 1 Zeile im Satz (0,01 Sek.) FEHLER: Keine Abfrage angegeben MySQL> 4: Lassen Sie uns dann ein Testkonto erstellen und Berechtigungen auf Spaltenebene erteilen. Wie unten dargestellt: mysql> Benutzertest löschen; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) mysql> Berechtigungen leeren; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) mysql> grant select (id, col1) auf MyDB.TEST1 für test@'%', identifiziert durch 'test'; Abfrage OK, 0 Zeilen betroffen (0,01 Sek.) mysql> Berechtigungen leeren; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) MySQL> mysql> wähle * aus mysql.columns_priv; +------+------+------+------------+----------+---------------------+-------------+ | Host | Db | Benutzer | Tabellenname | Spaltenname | Zeitstempel | Spaltenpriv | +------+------+------+------------+----------+---------------------+-------------+ | % | MeineDB | Test | TEST1 | ID | 0000-00-00 00:00:00 | Auswählen | | % | MeineDB | test | TEST1 | col1 | 0000-00-00 00:00:00 | Auswählen | +------+------+------+------------+----------+---------------------+-------------+ 2 Zeilen im Satz (0,00 Sek.) mysql> Berechtigungen für Test anzeigen; +------------------------------------------------------------------------------------------------------------------+ | Zuschüsse für test@% | +------------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* AN 'test'@'%' IDENTIFIZIERT DURCH PASSWORT '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' | | GRANT SELECT (id, col1) ON `MyDB`.`TEST1` TO 'test'@'%' | +------------------------------------------------------------------------------------------------------------------+ 2 Zeilen im Satz (0,00 Sek.) MySQL> 5: Lassen Sie uns dann ein Testkonto namens „Test“ erstellen und ihm Berechtigungen auf Unterprogrammebene erteilen. Wie unten dargestellt: mysql> VERFAHREN LÖSCHEN, WENN PRC_TEST VORHANDEN IST; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) mysql> TRENNUNGSZEICHEN // mysql> PROZEDUR ERSTELLEN PRC_TEST() -> BEGIN -> AUSWÄHLEN * VON kkk; -> ENDE // Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) mysql> TRENNUNGSZEICHEN ; mysql> gewähre die Ausführung der Prozedur MyDB.PRC_TEST an test@'%', identifiziert durch 'test'; Abfrage OK, 0 Zeilen betroffen (0,01 Sek.) mysql> Berechtigungen leeren; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) MySQL> mysql> Berechtigungen für Test anzeigen; +------------------------------------------------------------------------------------------------------------------+ | Zuschüsse für test@% | +------------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* AN 'test'@'%' IDENTIFIZIERT DURCH PASSWORT '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' | | GRANT EXECUTE ON PROCEDURE `MyDB`.`prc_test` TO 'test'@'%' | +------------------------------------------------------------------------------------------------------------------+ 2 Zeilen im Satz (0,00 Sek.) mysql> wähle * aus mysql.procs_priv, wobei Benutzer='test'; +------+------+------+--------------+--------------+----------------+-----------+--------------------+ | Host | Db | Benutzer | Routinename | Routinetyp | Gewährer | Proc_priv | Zeitstempel | +------+------+------+--------------+--------------+----------------+-----------+--------------------+ | % | MyDB | Test | PRC_TEST | VERFAHREN | root@localhost | Ausführen | 0000-00-00 00:00:00 | +------+------+------+--------------+--------------+----------------+-----------+--------------------+ 1 Zeile im Satz (0,00 Sek.) MySQL> Wenn Sie also die einem Benutzer erteilten Berechtigungen anzeigen müssen, müssen Sie die erteilten Berechtigungen dieser fünf Ebenen anzeigen. Überprüfen Sie von oben nach unten oder von klein nach hoch nacheinander die den einzelnen Ebenen erteilten Berechtigungen. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Vue integriert Tencent Map zur Implementierung der API (mit DEMO)
>>: Mounten Sie die Festplatte in einem Verzeichnis unter Ubuntu 18.04
Einführung in Docker Docker ist eine Open-Source-...
Als ich die CPP-Datei zum ersten Mal mit G++ komp...
In diesem Artikel wird der spezifische Code zur V...
Inhaltsverzeichnis Vorwort 1. Optimistisches Sper...
In diesem Artikel wird der CSS-Beispielcode vorge...
Vorwort Viele Webanwendungen speichern Daten in e...
Darüber hinaus wird eine mit einem Blog-Programm e...
Inhaltsverzeichnis Transaktionsisolationsebene Wa...
Die Wirkung dieser Funktion ist ähnlich wie vue的p...
Angenommen, Taobao animiert die Leute zum Einkauf...
Ich habe ein halbes Jahr lang nicht gebloggt, wofü...
Inhaltsverzeichnis 1. Einleitung 2. Grundsatz Pra...
Der W3C-Standardisierungsprozess ist in 7 verschi...
1. Jede Funktion ist ein Objekt und belegt Speich...
Inhaltsverzeichnis Portainer verwaltet mehrere Do...