MySQL-BerechtigungskontrolleAls DBA müssen Sie mit Berechtigungen in MySQL vertraut sein. Die Kontrolle der Berechtigungen in MySQL ist in drei Ebenen unterteilt:
Hier listen wir alle Berechtigungen in MySQL auf und geben abschließend einen Sonderfall an, um einen kleinen Fehler in der MySQL-Berechtigungssteuerung widerzuspiegeln. Schauen wir uns zunächst die Berechtigungsliste an. Die Berechtigungen sind in alphabetischer Reihenfolge angeordnet:
BerechtigungssystemtabelleDie Berechtigungen werden in den Systemtabellen „MySQL-Datenbankbenutzer“, „db“, „tables_priv“, „columns_priv“ und „procs_priv“ gespeichert, die nach dem Start der MySQL-Instanz in den Speicher geladen werden. • Benutzertabelle: Speichert Benutzerkontoinformationen und Berechtigungen auf globaler Ebene (alle Datenbanken), die bestimmen, welche Benutzer von welchen Hosts auf die Datenbankinstanz zugreifen können. Wenn eine globale Berechtigung vorhanden ist, bedeutet dies, dass alle Datenbanken über diese Berechtigung verfügen. Speichert Berechtigungen auf Datenbankebene, die bestimmen, welche Benutzer von welchen Hosts auf diese Datenbank zugreifen können Speichert Berechtigungen auf Tabellenebene, die bestimmen, welche Benutzer von welchen Hosts auf diese Tabelle in der Datenbank zugreifen können Speichert Berechtigungen auf Spaltenebene, die bestimmen, welche Benutzer von welchen Hosts auf dieses Feld in der Datenbanktabelle zugreifen können Speichert Berechtigungen auf gespeicherter Prozedur- und Funktionsebene So werden MySQL-Berechtigungen nach der Änderung wirksam • Nach dem Ausführen der Befehle „Grant“, „Revoke“, „setpassword“ oder „renameuser“ zum Ändern von Berechtigungen lädt MySQL die geänderten Berechtigungsinformationen automatisch in den Systemspeicher. Erteilen und Entziehen von BerechtigungenBeim Erteilen von Berechtigungen wird normalerweise die Grant-Anweisung verwendet. Nehmen wir als Beispiel eine Abfrage. Die Details lauten wie folgt: Gewähren Sie Benutzer@Host die Auswahl von db_name.table_name. Wenn Sie einem Konto Berechtigungen für alle Tabellen in einer Datenbank erteilen, müssen Sie table_name in der obigen Anweisung in * ändern. Wenn Sie Berechtigungen für alle Tabellen in allen Datenbanken in der Datenbank erteilen, müssen Sie sowohl db_name als auch table_name in * ändern. Die Widerrufssyntax wird normalerweise zum Widerrufen von Berechtigungen verwendet. Die Verwendung erfolgt wie folgt am Beispiel einer Abfrage: widerrufen Sie die Auswahl von db_name.table_name von user@host; Es ist zu beachten, dass der Unterschied zwischen „it“ und „grant“ darin besteht, dass der letzte Teil der Anweisung von „to“ in „from“ geändert wird. Ein SonderfallAls ich heute Online-Geschäfte abwickelte, musste ich Berechtigungen öffnen. Ich wollte die gespeicherte Prozedur vom Workbench-Client aus anzeigen. Meine erste Reaktion bestand darin, direkt Ausführungsberechtigungen zu erteilen. Als Ergebnis konnte der Geschäftspartner die gespeicherte Prozedur nach Erteilung der Ausführungsberechtigungen immer noch nicht anzeigen. Ich ging hinüber, um dies zu überprüfen, und nachdem ich eine Verbindung zur Datenbank hergestellt hatte, wurde Folgendes angezeigt: mysql> Datenbanken anzeigen; +--------------------+ | Datenbank | +--------------------+ | Informationsschema | |AAA| +--------------------+ 2 Zeilen im Satz (0,00 Sek.) mysql> AAA verwenden Datenbank geändert mysql> Prozedurstatus anzeigen\G *************************** 1. Reihe *************************** Datenbank: CVS Name: ba_get_grow Typ: VERFAHREN Definierer: [email protected] Geändert: 26.02.2019 :: Erstellt: 26.02.2019 :: Sicherheitstyp: DEFINER Kommentar: Zeichensatzclient: utf8 Sortierverbindung: utf8_general_ci Datenbanksortierung: utf8_general_ci mysql> zeige Erstellungsprozedur ba_get_grow\G *************************** 1. Reihe *************************** Prozedur: ba_get_grow SQL-Modus: Prozedur erstellen: NULL Zeichensatzclient: utf8 Sortierverbindung: utf8_general_ci Datenbanksortierung: utf8_general_ci Zeile im Satz (0,00 Sek.) Es ist ersichtlich, dass der Wert der Prozedur „create“ in Zeile 29 NULL ist und der Inhalt der Prozedur nicht angezeigt wird. Natürlich kann die Prozedur nicht angezeigt werden. Was sollen wir in diesem Fall tun? Ich dachte, dass die Tabelle mysql.proc Informationen zu gespeicherten Prozeduren enthält, also habe ich der Tabelle mysql.proc mit der folgenden Methode eine Nur-Lese-Berechtigung erteilt: [email protected]:(keine) 22:35:07>>Grant Select für `mysql`.proc an 'Benutzer'@'Host'; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) Melden Sie sich erneut beim Client an. Sie werden feststellen, dass der Inhalt der gespeicherten Prozedur bereits wie folgt sichtbar ist: mysql> Datenbanken anzeigen; +--------------------+ | Datenbank | +--------------------+ | Informationsschema | |AAA| +--------------------+ 2 Zeilen im Satz (0,00 Sek.) mysql> Datenbanken anzeigen; +--------------------+ | Datenbank | +--------------------+ | Informationsschema | |AAA| |mysql | +--------------------+ 3 Zeilen im Satz (0,00 Sek.) mysql> zeige Erstellungsprozedur ba_get_grow\G *************************** 1. Reihe *************************** Prozedur: ba_get_grow SQL-Modus: Prozedur erstellen: CREATE DEFINER=`dba_admin`@`127.0.0.1` PROCEDURE `ba_get_grow`( in p_table_info varchar(), raus out_retmsg varchar() ) BEGINNEN XXXXXXXXX XXXXXXXXX XXXXXXXXX XXXXXXXXX ENDE Zeichensatzclient: utf8 Sortierverbindung: utf8_general_ci Datenbanksortierung: utf8_general_ci Zeile im Satz (0,00 Sek.) Oben finden Sie den detaillierten Inhalt der MySQL-Berechtigungskontrolle. Weitere Informationen zur MySQL-Berechtigungskontrolle finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
>>: HTML-strukturierte Implementierungsmethode
Heute habe ich diese Eingabeaufforderung gefunden...
Inhaltsverzeichnis 1. Was ist Docker Compose? 2. ...
Inhaltsverzeichnis 1. Kurzbeschreibung 2. Schritt...
1: schreibgeschützt dient zum Sperren dieses Steue...
Vorwort Ich weiß nicht, wie lange dieser Freund D...
Inhaltsverzeichnis 1. Einleitung 1. Bauteildaten ...
Vorwort Ich hatte zuvor die 2375 Remote API von D...
Nginx entscheidet zunächst, welcher Serverblock i...
Vorne geschrieben Nachdem wir Nginx basierend auf...
Beginnen wir mit einer Frage Als ich vor fünf Jah...
Es gibt zwei Installationsmethoden für MySQL: MSI...
Im vorherigen Artikel wurde erläutert, wie Sie mi...
Viele Leute haben mich auch gefragt, welche Büche...
Ursache Ich habe vor Kurzem mit der Umstrukturier...
HTML steht für Hypertext Markup Language. Heutzut...