Einführung in MySQL-Rollenfunktionen

Einführung in MySQL-Rollenfunktionen

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 Rolle

Die 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 Operationen

Oben 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';


Es ist zu beachten, dass die Berechtigungen der in mandatory_roles konfigurierten Rollen nicht widerrufen oder gelöscht werden können.

Zusammenfassen:

Zum rollenbezogenen Wissen seien einige Punkte kurz zusammengefasst:

  • Eine Rolle ist eine Sammlung von Berechtigungen, denen unterschiedliche Berechtigungen zugewiesen werden können.
  • Aktivieren Sie die Variable „activate_all_roles_on_login“, um Rollen automatisch zu aktivieren.
  • Ein Benutzer kann mehrere Rollen haben und eine Rolle kann mehreren Benutzern zugewiesen werden.
  • Änderungen an Rollenberechtigungen werden auf die entsprechenden Benutzer angewendet.
  • Wenn Sie eine Rolle löschen, verlieren Benutzer, die diese Rolle besitzen, auch die Berechtigungen dieser Rolle.
  • Sie können eine obligatorische Rolle festlegen, sodass alle Benutzer über die Berechtigungen dieser Rolle verfügen.
  • Die Rollenverwaltung ähnelt der Benutzerverwaltung, mit dem Unterschied, dass Rollen nicht zum Anmelden bei der Datenbank verwendet werden können.

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:
  • Grundsätze und Nutzungsdetails für MySQL 8.0-Benutzer- und Rollenverwaltung
  • Detaillierte Erklärung der neuen Funktion ROLE in MySQL 8

<<:  Neulinge lernen schnell die Schritte zum Erstellen von Website-Symbolen

>>:  Informationen zum Vue-Komponentenwechsel, dynamischen Komponenten und Komponenten-Caching

Artikel empfehlen

Mysql setzt Boolesche Typoperationen

Mysql legt den Booleschen Typ fest 1. Tinyint-Typ...

Neonlichteffekte mit reinem CSS3 umgesetzt

Dies ist der zu erzielende Effekt: Sie können seh...

FastDFS- und Nginx-Integration zur Codeanalyse

FastDFS- und Nginx-Integration: Der Tracker wird ...

Linux verwendet die suid vim.basic-Datei, um eine Rechteausweitung zu erreichen

Auf Kali reproduzieren Legen Sie zunächst die Sui...

Allgemeine Benennungsregeln für CSS-Klassen und IDs

Öffentlicher Name der Seite: #wrapper - - Der äuß...

So stellen Sie Go-Webanwendungen mit Docker bereit

Inhaltsverzeichnis Warum brauchen wir Docker? Bei...

Linux implementiert den Quellcode des Zahlenratespiels

Ein einfacher Linux-Ratespiel-Quellcode Spielrege...

Detaillierte Erklärung der MySQL-Berechtigungen und -Indizes

MySQL-Berechtigungen und Indizes Der höchste Benu...

So installieren Sie JDK8 unter Windows

1. Herunterladen: http://www.oracle.com/technetwo...

jQuery zum Erreichen des Sperrfeuereffekts

In diesem Artikel wird der spezifische Code von j...

Lösung für die in Firefox oder IE nicht ermittelte Spannweite

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