Vorwort:Im vorherigen Artikel haben wir das Wissen im Zusammenhang mit der MySQL-Berechtigungsverwaltung vorgestellt. Wenn eine Datenbankinstanz eine große Zahl Bibliotheken oder Benutzer umfasst, wird die Berechtigungsverwaltung zunehmend aufwändiger und die Berechtigungen müssen möglicherweise häufig geändert werden. MySQL 8.0 fügt die Rollenfunktion hinzu, die die Berechtigungsverwaltung komfortabler macht. In diesem Artikel werden wir uns die Rollenfunktion unter 8.0 ansehen. 1. Einführung in die RolleDie Rollenfunktion ist nicht speziell auf die Oracle-Datenbank beschränkt und wird in Oracle häufig verwendet. MySQL Version 8.0 hat endlich die Rollenfunktion hinzugefügt und bietet damit eine neue Idee für die Verwaltung von Datenbankbenutzerrechten. Eine Rolle kann als eine Sammlung von Berechtigungen betrachtet werden, und diese Sammlung hat einen einheitlichen Namen: Rolle. Mehreren Datenbankbenutzern können Berechtigungen derselben Rolle erteilt werden. Berechtigungsänderungen können direkt durch Ändern der Rolle vorgenommen werden, ohne dass jeder Benutzer einzeln geändert werden muss, was den Betrieb und die Verwaltung erleichtert. Eine Rolle kann erstellt, gelöscht und geändert werden. Ihre Auswirkungen können auf die von ihr verwalteten Benutzer angewendet werden. Schauen wir uns die Rollenfunktionen genauer an: # Eine Rolle erstellen mysql> Rolle „dev_role“ erstellen; Abfrage OK, 0 Zeilen betroffen (0,15 Sek.) # Erteilen Sie Berechtigungen für die Rolle „mysql“> grant select on db1.* to 'dev_role'@'%'; Abfrage OK, 0 Zeilen betroffen (0,12 Sek.) # Zeigen Sie die Berechtigungen der Rolle mysql> show grants for 'dev_role'@'%' an; +----------------------------------------------+ | Berechtigungen für dev_role@% | +----------------------------------------------+ | GRANT USAGE ON *.* TO `dev_role`@`%` | | GRANT SELECT ON `db1`.* TO `dev_role`@`%` | +----------------------------------------------+ # Einen Benutzer erstellen und Rollenberechtigungen erteilen mysql> create user 'dev1'@'%' identified by '123456'; Abfrage OK, 0 Zeilen betroffen (0,68 Sek.) mysql> gewähre „dev_role“ an „dev1“@„%“; Abfrage OK, 0 Zeilen betroffen (0,38 Sek.) # Benutzerberechtigungen anzeigen mysql> show grants for 'dev1'@'%'; +------------------------------------+ | Zuschüsse für dev1@% | +------------------------------------+ | GRANT USAGE ON *.* TO `dev1`@`%` | | GRANT `dev_role`@`%` TO `dev1`@`%` | +------------------------------------+ 2 Reihen im Satz (0,63 Sek.) # Melden Sie sich mit dem Benutzer dev1 bei root@localhost an ~]# mysql -udev1 -p123456 mysql> Datenbanken anzeigen; +--------------------+ | Datenbank | +--------------------+ | Informationsschema | +--------------------+ 1 Zeile im Satz (0,34 Sek.) mysql> wähle CURRENT_ROLE(); +----------------+ | AKTUELLE_ROLE() | +----------------+ | KEINE | +----------------+ 1 Zeile im Satz (0,59 Sek.) Was ist los? Anders als wir dachten, erhält ein Benutzer nach der Gewährung einer bestimmten Rollenberechtigung offenbar nicht die entsprechende Berechtigung. Dies liegt daran, dass die dem Benutzer zugewiesenen Rollen in seiner Sitzung inaktiv sind. Der Benutzer verfügt nur dann über die Berechtigungen dieser Rolle, wenn die zugewiesene Rolle in der Sitzung aktiv ist. Um zu ermitteln, welche Rollen in der aktuellen Sitzung aktiv sind, verwenden Sie die Funktion CURRENT_ROLE(). # Verwenden Sie den Befehl „Set Default Role“, um die Rolle zu aktivierenmysql> SET DEFAULT ROLE ALL TO dev1; Abfrage OK, 0 Zeilen betroffen (0,77 Sek.) # Melden Sie sich erneut an und stellen Sie fest, dass die Berechtigungen normal sind root@localhost ~]# mysql -udev1 -p123456 mysql> wähle CURRENT_ROLE(); +----------------+ | AKTUELLE_ROLE() | +----------------+ | `Entwicklerrolle`@`%` | +----------------+ 1 Zeile im Satz (0,57 Sek.) mysql> Datenbanken anzeigen; +--------------------+ | Datenbank | +--------------------+ |db1| | Informationsschema | +--------------------+ 2 Reihen im Satz (1,05 Sek.) Zusätzlich zur Verwendung des Befehls „set default role“ zum Aktivieren der Rolle können Sie auch die Systemvariable activate_all_roles_on_login ändern. Diese Variable bestimmt, ob die Rolle automatisch aktiviert wird. Die Standardeinstellung ist OFF, was bedeutet, dass sie nicht automatisch aktiviert wird. Es wird empfohlen, diese Variable auf ON zu ändern, damit Sie die Rolle nach der Zuweisung an einen neuen Benutzer nicht manuell aktivieren müssen. # Zeigen Sie die Variable „activate_all_roles_on_login“ anmysql> zeigt Variablen wie „activate_all_roles_on_login“ an; +-----------------------------+----------+ | Variablenname | Wert | +-----------------------------+----------+ | alle_Rollen_beim_Login_aktivieren | AUS | +-----------------------------+----------+ 1 Reihe im Satz (1,53 Sek.) # Aktivieren Sie diese Variable. Aktivieren Sie sie zuerst dynamisch. Fügen Sie diesen Parameter dann zur Konfigurationsdatei my.cnf hinzu. mysql> set global activate_all_roles_on_login = on; Abfrage OK, 0 Zeilen betroffen (0,50 Sek.) # Die Rolle wird dann automatisch aktiviertmysql> create user 'dev2'@'%' identified by '123456'; Abfrage OK, 0 Zeilen betroffen (0,68 Sek.) mysql> gewähre „dev_role“ an „dev2“@„%“; Abfrage OK, 0 Zeilen betroffen (0,38 Sek.) root@localhost ~]# mysql -udev2 -p123456 mysql> wähle CURRENT_ROLE(); +----------------+ | AKTUELLE_ROLE() | +----------------+ | `Entwicklerrolle`@`%` | +----------------+ 1 Zeile im Satz (0,57 Sek.) mysql> Datenbanken anzeigen; +--------------------+ | Datenbank | +--------------------+ |db1| | Informationsschema | +--------------------+ 2 Reihen im Satz (1,05 Sek.) 2. Rollenbezogene OperationenOben haben wir gezeigt, wie man Rollen erstellt und Benutzern Rollenberechtigungen erteilt. Es gibt noch viele weitere Vorgänge im Zusammenhang mit Rollen. Schauen wir sie uns einmal an. # Rollenberechtigungen ändern mysql> grant select auf db2.* auf 'dev_role'@'%'; Abfrage OK, 0 Zeilen betroffen (0,33 Sek.) # Die Berechtigungen des Benutzers mit dieser Rolle ändern sich nach dem erneuten Anmelden entsprechend root@localhost ~]# mysql -udev1 -p123456 mysql> Datenbanken anzeigen; +--------------------+ | Datenbank | +--------------------+ |db1| | db2 | | Informationsschema | +--------------------+ 3 Reihen im Satz (2,01 Sek.) # Rollenberechtigungen widerrufen mysql> revoke SELECT ON db2.* from 'dev_role'@'%'; Abfrage OK, 0 Zeilen betroffen (0,31 Sek.) # Einem Benutzer die Rolle entziehen mysql> revoke 'dev_role'@'%' from 'dev1'@'%'; Abfrage OK, 0 Zeilen betroffen (0,72 Sek.) mysql> Berechtigungen für „dev1“@„%“ anzeigen; +----------------------------------+ | Zuschüsse für dev1@% | +----------------------------------+ | GRANT USAGE ON *.* TO `dev1`@`%` | +----------------------------------+ 1 Zeile im Satz (1,06 Sek.) # Eine Rolle löschen (nach dem Löschen einer Rolle verliert der entsprechende Benutzer auch die Berechtigungen der Rolle) mysql> Rolle dev_role löschen; Abfrage OK, 0 Zeilen betroffen (0,89 Sek.) Wir können obligatorische Rollen auch über die Variable mandatory_roles konfigurieren. Bei obligatorischen Rollen weist der Server die Rolle standardmäßig allen Benutzern zu, ohne dass die Rolle explizit zugewiesen werden muss. Sie können die Datei my.cnf oder SET PERSIST zum Konfigurieren verwenden, zum Beispiel: # my.cnf-Konfiguration [mysqld] obligatorische Rollen = "Entwicklerrolle" # Änderungsvariable festlegen SET PERSIST mandatory_roles = 'dev_role';
Zusammenfassen:Zum rollenbezogenen Wissen seien einige Punkte kurz zusammengefasst:
Oben finden Sie eine ausführliche Einführung in die MySQL-Rollenfunktion. Weitere Informationen zur MySQL-Rollenfunktion finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Neulinge lernen schnell die Schritte zum Erstellen von Website-Symbolen
>>: Informationen zum Vue-Komponentenwechsel, dynamischen Komponenten und Komponenten-Caching
Mysql legt den Booleschen Typ fest 1. Tinyint-Typ...
Dieser Artikel basiert auf dem Free Code Camp Bas...
Dies ist der zu erzielende Effekt: Sie können seh...
FastDFS- und Nginx-Integration: Der Tracker wird ...
Auf Kali reproduzieren Legen Sie zunächst die Sui...
Öffentlicher Name der Seite: #wrapper - - Der äuß...
Inhaltsverzeichnis Warum brauchen wir Docker? Bei...
Ein einfacher Linux-Ratespiel-Quellcode Spielrege...
CSS setzt Overflow so, dass die Bildlaufleiste au...
MySQL-Berechtigungen und Indizes Der höchste Benu...
1. Herunterladen: http://www.oracle.com/technetwo...
In diesem Artikel wird der spezifische Code von j...
Suchen Sie zwei Testmaschinen: [root@docker1 cent...
beschreiben Dieser Artikel stellt eine Methode zu...
Code kopieren Der Code lautet wie folgt: <html...