Bei der Autorisierung geht es darum, einem Benutzer bestimmte Berechtigungen zu erteilen. Sie können beispielsweise einem neu erstellten Benutzer die Berechtigung erteilen, alle Datenbanken und Tabellen abzufragen. MySQL bietet die GRANT-Anweisung zum Festlegen von Berechtigungen für Benutzer. In MySQL können nur Benutzer mit dem GRANT-Privileg die GRANT-Anweisung ausführen. Das Syntaxformat lautet wie folgt:
GRANT priv_type [(Spaltenliste)] ON Datenbank.Tabelle
AN Benutzer [IDENTIFIZIERT DURCH [PASSWORT] 'Passwort']
[, Benutzer[IDENTIFIZIERT DURCH [PASSWORT] 'Passwort']] …
[MIT mit_Option [mit_Option]...]
In: - Der Parameter priv_type gibt den Berechtigungstyp an.
- Der Parameter columns_list gibt an, für welche Spalten die Berechtigung gilt. Wenn dieser Parameter weggelassen wird, gilt er für die gesamte Tabelle.
- database.table wird verwendet, um die Berechtigungsstufe anzugeben;
- Der Benutzerparameter stellt ein Benutzerkonto dar, das aus einem Benutzernamen und einem Hostnamen im Format „'Benutzername'@'Hostname'“ besteht.
- Der Parameter IDENTIFIED BY wird verwendet, um ein Passwort für den Benutzer festzulegen.
- Der Passwortparameter ist das neue Passwort des Benutzers.
Auf das Schlüsselwort WITH folgen ein oder mehrere with_option-Argumente. Dieser Parameter verfügt über 5 Optionen, die im Folgenden detailliert beschrieben werden: - Gewährungsoption: Der autorisierte Benutzer kann diese Berechtigungen anderen Benutzern erteilen.
- MAX_QUERIES_PER_HOUR count: Legen Sie die Anzahl der Abfragen fest, die pro Stunde ausgeführt werden können.
- MAX_UPDATES_PER_HOUR count: Legt die Anzahl der Updates fest, die pro Stunde durchgeführt werden können.
- MAX_CONNECTIONS_PER_HOUR count: Legen Sie die Anzahl der Verbindungen fest, die pro Stunde hergestellt werden können.
- MAX_USER_CONNECTIONS-Anzahl: Legt die Anzahl der Verbindungen fest, die ein einzelner Benutzer gleichzeitig haben kann.
Die folgenden Berechtigungsgruppen können in MySQL gewährt werden: - Spaltenberechtigungen beziehen sich auf eine bestimmte Spalte in einer Tabelle. Mit der UPDATE-Anweisung können Sie beispielsweise den Wert der Spalte „Name“ in der Tabelle „Students“ aktualisieren.
- Tabellenberechtigungen beziehen sich auf alle Daten in einer bestimmten Tabelle. Mit der SELECT-Anweisung können Sie beispielsweise die Berechtigungen aller Daten in der Tabelle „Students“ abfragen.
- Datenbankberechtigungen beziehen sich auf alle Tabellen in einer bestimmten Datenbank. Sie können beispielsweise die Berechtigung zum Erstellen einer neuen Tabelle in der vorhandenen Datenbank mytest erteilen.
- Benutzerberechtigungen beziehen sich auf alle Datenbanken in MySQL. Sie können beispielsweise eine vorhandene Datenbank löschen oder eine neue Datenbank erstellen.
Entsprechend haben die Werte, die zur Angabe von Berechtigungsstufen in der GRANT-Anweisung verwendet werden können, folgende Formate: - *: Zeigt alle Tabellen in der aktuellen Datenbank an.
- *.*: zeigt alle Tabellen in allen Datenbanken an.
- db_name.*: stellt alle Tabellen in einer Datenbank dar, db_name gibt den Datenbanknamen an.
- db_name.tbl_name: stellt eine Tabelle oder Ansicht in einer Datenbank dar. db_name gibt den Datenbanknamen an und tbl_name gibt den Tabellennamen oder Ansichtsnamen an.
- db_name.routine_name: stellt eine gespeicherte Prozedur oder Funktion in einer Datenbank dar. routine_name gibt den Namen der gespeicherten Prozedur oder Funktion an.
- TO-Klausel: Wenn das Privileg einem nicht vorhandenen Benutzer gewährt wird, führt MySQL automatisch eine CREATE USER-Anweisung aus, um den Benutzer zu erstellen. Gleichzeitig muss jedoch ein Kennwort für den Benutzer festgelegt werden.
Berechtigungstyp Beschreibung
Im Folgenden werden die Berechtigungstypen in der GRANT-Anweisung erläutert (weitere Informationen finden Sie im Abschnitt „Detaillierte Erklärung der MySQL-Benutzertabelle“).
1) Beim Erteilen von Datenbankberechtigungen kann <Berechtigungstyp> mit den folgenden Werten angegeben werden: Berechtigungsname | Entsprechend den Feldern in der Benutzertabelle | veranschaulichen |
---|
WÄHLEN | Select_priv | Gibt an, dass dem Benutzer die Berechtigung erteilt wird, mit der SELECT-Anweisung auf alle Tabellen und Ansichten in einer bestimmten Datenbank zuzugreifen. | EINFÜGEN | Insert_priv | Gibt an, dass dem Benutzer die Berechtigung erteilt wurde, mit der INSERT-Anweisung Datenzeilen zu allen Tabellen in einer bestimmten Datenbank hinzuzufügen. | LÖSCHEN | Delete_priv | Gibt an, dass dem Benutzer die Berechtigung erteilt wurde, mit der DELETE-Anweisung Datenzeilen in allen Tabellen einer bestimmten Datenbank zu löschen. | AKTUALISIEREN | Update_priv | Gibt an, dass dem Benutzer die Berechtigung erteilt wird, die UPDATE-Anweisung zum Aktualisieren der Werte aller Datentabellen in einer bestimmten Datenbank zu verwenden. | REFERENZEN | Referenzen_priv | Gibt an, dass dem Benutzer die Berechtigung zum Erstellen eines Fremdschlüssels erteilt wurde, der auf eine Tabelle in einer bestimmten Datenbank verweist. | ERSTELLEN | Create_priv | Gibt an, dass der autorisierte Benutzer die Anweisung CREATE TABLE verwenden kann, um eine neue Tabelle in einer bestimmten Datenbank zu erstellen. | ÄNDERN | Alter_priv | Gibt an, dass dem Benutzer die Berechtigung erteilt wurde, mit der Anweisung ALTER TABLE alle Datentabellen in einer bestimmten Datenbank zu ändern. | ANSICHT ANZEIGEN | Show_view_priv | Gibt an, dass dem Benutzer die Berechtigung erteilt wurde, die Ansichtsdefinitionen vorhandener Ansichten in einer bestimmten Datenbank anzuzeigen. | ROUTINE SCHAFFEN | Create_routine_priv | Gibt an, dass dem Benutzer die Berechtigung zum Erstellen gespeicherter Prozeduren und gespeicherter Funktionen für eine bestimmte Datenbank erteilt wurde. | ALTER ROUTINE | Alter_routine_priv | Gibt an, dass dem Benutzer die Berechtigung zum Aktualisieren und Löschen vorhandener gespeicherter Prozeduren und gespeicherter Funktionen in der Datenbank erteilt wurde. | INDEX | Index_priv | Gibt an, dass dem Benutzer die Berechtigung erteilt wurde, Indizes für alle Tabellen in einer bestimmten Datenbank zu definieren und zu löschen. | FALLEN | Drop_priv | Gibt an, dass dem Benutzer die Berechtigung zum Löschen aller Tabellen und Ansichten in einer bestimmten Datenbank erteilt wurde. | Temporäre Tabellen erstellen | Create_tmp_table_priv | Gibt an, dass dem Benutzer die Berechtigung zum Erstellen temporärer Tabellen in einer bestimmten Datenbank erteilt wurde. | ANSICHT ERSTELLEN | Create_view_priv | Gibt an, dass dem Benutzer die Berechtigung zum Erstellen neuer Ansichten in einer bestimmten Datenbank erteilt wurde. | ROUTINE AUSFÜHREN | Execute_priv | Gibt an, dass dem Benutzer die Berechtigung zum Aufrufen gespeicherter Prozeduren und gespeicherter Funktionen einer bestimmten Datenbank erteilt wurde. | Sperrtabellen | Lock_tables_priv | Gibt an, dass dem Benutzer die Berechtigung erteilt wurde, eine vorhandene Datentabelle in einer bestimmten Datenbank zu sperren. | ALLE oder ALLE PRIVILEGIEN oder SUPER | Super_priv | Zeigt alle oben genannten Berechtigungen/Superberechtigungen an |
2) Beim Erteilen von Tabellenberechtigungen kann <Berechtigungstyp> mit den folgenden Werten angegeben werden:
Berechtigungsname | Entsprechend den Feldern in der Benutzertabelle | veranschaulichen |
---|
WÄHLEN | Select_priv | Gewährt Benutzern die Möglichkeit, mit der SELECT-Anweisung auf eine bestimmte Tabelle zuzugreifen. | EINFÜGEN | Insert_priv | Gewährt einem Benutzer die Möglichkeit, mithilfe der INSERT-Anweisung Datenzeilen zu einer bestimmten Tabelle hinzuzufügen. | LÖSCHEN | Delete_priv | Erteilt einem Benutzer die Berechtigung, mit der DELETE-Anweisung Zeilen aus einer bestimmten Tabelle zu löschen. | FALLEN | Drop_priv | Benutzern die Berechtigung zum Löschen von Tabellen erteilen | AKTUALISIEREN | Update_priv | Gibt dem Benutzer die Möglichkeit, eine bestimmte Tabelle mit der UPDATE-Anweisung zu aktualisieren. | ÄNDERN | Alter_priv | Gewährt dem Benutzer die Möglichkeit, eine Tabelle mit der Anweisung ALTER TABLE zu ändern. | REFERENZEN | Referenzen_priv | Gewährt einem Benutzer die Möglichkeit, einen Fremdschlüssel zu erstellen, der auf eine bestimmte Tabelle verweist. | ERSTELLEN | Create_priv | Gewährt einem Benutzer die Möglichkeit, eine Tabelle mit einem bestimmten Namen zu erstellen. | INDEX | Index_priv | Gewährt dem Benutzer die Möglichkeit, Indizes für eine Tabelle zu definieren. | ALLE oder ALLE PRIVILEGIEN oder SUPER | Super_priv | Alle Berechtigungsnamen |
3) Beim Erteilen von Spaltenberechtigungen kann der Wert von <Berechtigungstyp> nur als SELECT, INSERT und UPDATE angegeben werden, und die Spaltennamenliste column-list muss nach der Berechtigung hinzugefügt werden.
4) Die effizientesten Berechtigungen sind Benutzerberechtigungen. Beim Erteilen von Benutzerberechtigungen kann der <Berechtigungstyp> zusätzlich zu allen Werten, die beim Erteilen von Datenbankberechtigungen angegeben wurden, einen der folgenden Werte annehmen: - BENUTZER ERSTELLEN: Gewährt dem Benutzer die Berechtigung, neue Benutzer zu erstellen und zu löschen.
- DATENBANKEN ANZEIGEN: Erteilt dem Benutzer die Berechtigung, mit der Anweisung SHOW DATABASES die Definitionen aller vorhandenen Datenbanken anzuzeigen.
Beispiel 1
Verwenden Sie die GRANT-Anweisung, um einen neuen Benutzer „testUser“ mit dem Kennwort „testPwd“ zu erstellen. Der Benutzer „testUser“ verfügt über Abfrage- und Einfügeberechtigungen für alle Daten und hat die Berechtigung „GRANT“. Die SQL-Anweisung und der Ausführungsprozess sind wie folgt.
mysql> GRANT SELECT,INSERT ON *.*
-> ZU 'Testbenutzer'@'localhost'
-> IDENTIFIZIERT DURCH 'testPwd'
-> MIT GRANT-OPTION;
Abfrage OK, 0 Zeilen betroffen, 1 Warnung (0,05 Sek.)
Verwenden Sie die Anweisung SHOW GRANTS, um die Berechtigungen des Benutzers testUser abzufragen, wie unten gezeigt.
mysql> GRANTS FÜR 'testUser'@'localhost' ANZEIGEN;
+-------------------------------------------------------------------------+
| Berechtigungen für testUser@localhost |
+-------------------------------------------------------------------------+
| GRANT SELECT, INSERT ON *.* TO 'testUser'@'localhost' MIT GRANT-OPTION |
+-------------------------------------------------------------------------+
1 Zeile im Satz (0,00 Sek.)
Die Ergebnisse zeigen, dass testUser Abfrage- und Einfügeberechtigungen für alle Tabellen in allen Datenbanken hat und diese Berechtigungen anderen Benutzern erteilen kann.
expandieren
Datenbankadministratoren müssen bei der Autorisierung normaler Benutzer besonders vorsichtig sein. Eine falsche Autorisierung kann zu schwerwiegenden Schäden an der Datenbank führen. Wenn Sie feststellen, dass ein Benutzer zu viele Berechtigungen hat, sollten Sie die Berechtigungen schnellstmöglich mit der REVOKE-Anweisung widerrufen. Bitte beachten Sie, dass es am besten ist, normalen Benutzern keine SUPER- und GRANT-Berechtigungen zu erteilen. Weitere Informationen zum Löschen von Benutzerberechtigungen finden Sie unter MySQL REVOKE: Löschen von Benutzerberechtigungen. Dies ist das Ende dieses Artikels über die Implementierung der MySQL GRANT-Benutzerautorisierung. Weitere relevante Inhalte zur MySQL GRANT-Benutzerautorisierung finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:- Drei Implementierungsmethoden für die MySQL-Kopiertabelle und die Grant-Analyse
- So verwenden Sie den MySQL-Autorisierungsbefehl „grant“
- Eine kurze Erklärung zum Erteilen und Entziehen von Berechtigungen in MySQL
- Befehl zur Erteilung von Berechtigungen in der MySQL-Verwaltung zum Erstellen von Notizen
- Detaillierte Erklärung des MySQL Grant-Befehls
- Hinweise zu MySQL-Grants
|