Detaillierte Erklärung der neuen Funktion ROLE in MySQL 8

Detaillierte Erklärung der neuen Funktion ROLE in MySQL 8

Welche Probleme löst MySQL ROLE?

Wenn Sie ein DBA mit guten beruflichen Qualitäten sind und mehr Wert auf die Berechtigungsverwaltung legen, sind Sie möglicherweise auf ein solches Problem gestoßen: Es gibt mehrere Entwicklerkonten in der Datenbank. Eines Tages müssen Sie

Wenn Sie möchten, dass alle vorherigen Konten Tabellen unter einem neuen Schema betreiben können, müssen Sie dem ersten Konto vor MySQL-8.0 separat Berechtigungen erteilen.

mysql-8.0.x abstrahiert Berechtigungen und verwendet ROLE, um sie darzustellen. Wenn Sie einer ROLE neue Berechtigungen hinzufügen, ändern sich auch die Berechtigungen aller Benutzer, die dieser ROLE zugeordnet sind.

Das obige Szenario kann mit nur einer SQL-Anweisung in MySQL 8.0.x gelöst werden.

【Intelligente MySQL-Entwicklung】

MySQL hat ROLE auf sehr clevere Weise eingeführt. Da ROLE ein Symbol für eine Reihe von Berechtigungen ist, existiert dieses Ding bereits in MySQL! Es ist USER.

1): Erstelle einen Charakter

Rolle „Devgroup“ erstellen;

Als ich mir die mysql.user-Tabelle ansah, war ich wirklich überrascht von der Intelligenz von MySQL.

Wählen Sie Benutzer, Host aus mysql.user;                              
+------------------+------------+
| Benutzer | Gastgeber |
+------------------+------------+
| Entwicklergruppe | % |
| Sicherung | 127.0.0.1 |
| mysql.sys | lokaler Host |
| Stammverzeichnis | lokaler Host |
+------------------+------------+

Die Rolle ist eigentlich nur ein Benutzer!

2): Rollen stärken

gewähre der Entwicklergruppe alles auf tempdb.*;                             
Abfrage OK, 0 Zeilen betroffen (0,07 Sek.)

Es handelt sich dabei exakt um das gleiche wie beim Bedienbenutzer!

3): Erstellen Sie einen Benutzer und weisen Sie ihm die Rollenberechtigungen zu

Erstellen Sie den Benutzer tom@'127.0.0.1' mit der Identifizierung '123456'.                     
Abfrage OK, 0 Zeilen betroffen (0,09 Sek.)

gewähre tom@'127.0.0.1' die Entwicklergruppe;                             
Abfrage OK, 0 Zeilen betroffen (0,09 Sek.)

4): Testen Sie, ob sich der neu erstellte Benutzer anmelden kann

mysql -h127.0.0.1 -P3306 -utom -p123456                     
mysql: [Warnung] Die Verwendung eines Passworts in der Befehlszeilenschnittstelle kann unsicher sein.
Willkommen beim MySQL-Monitor. Befehle enden mit ; ​​oder \g.
Ihre MySQL-Verbindungs-ID ist 16
Serverversion: 8.0.13 MySQL Community Server – GPL

Copyright (c) 2000, 2018, Oracle und/oder seine Tochtergesellschaften. Alle Rechte vorbehalten.

Oracle ist eine eingetragene Marke der Oracle Corporation und/oder ihrer
Tochtergesellschaften. Andere Namen können Marken ihrer jeweiligen
Eigentümer.

Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen.

mysql> Berechtigungen anzeigen;                                        
+----------------------------------------------+
| Zuschüsse für [email protected] |
+----------------------------------------------+
| GRANT USAGE ON *.* TO `tom`@`127.0.0.1` |
| GRANT `devgroup`@`%` TO `tom`@`127.0.0.1` |
+----------------------------------------------+
2 Zeilen im Satz (0,00 Sek.)

[Rolle und Benutzer sind nur zwei Seiten derselben Medaille]

Wenn Sie immer noch der Meinung sind, dass "Rolle" und "Benutzer" zwei verschiedene Dinge sind, dann kann ich nur den ultimativen Zug verwenden

1): Weisen Sie dem Tom-Benutzer jetzt den Benutzer [email protected] als Rolle zu

gewähren Sie tom@'127.0.0.1' root@'127.0.0.1';                         
Abfrage OK, 0 Zeilen betroffen (0,04 Sek.)

2): Benutzer tom überprüft seine eigenen Berechtigungen

Zuschüsse anzeigen;
+------------------------------------------------------------------+
| Zuschüsse für [email protected] |
+------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `tom`@`127.0.0.1` |
| GRANT `devgroup`@`%`,`root`@`127.0.0.1` TO `tom`@`127.0.0.1` |
+------------------------------------------------------------------+
2 Zeilen im Satz (0,00 Sek.)

Sie können sehen, dass die Berechtigungen von [email protected] festgelegt wurden. Da es sich bei allen um Root-Benutzerberechtigungen handelt, löschen wir eine Tempdb-Bibliothek und werfen einen Blick darauf!

3): Löschen Sie die Bibliothek

Datenbank tempdb löschen;                                    
FEHLER 1044 (42000): Dem Benutzer „tom“@„127.0.0.1“ wurde der Zugriff auf die Datenbank „tempdb“ verweigert.

Es scheint, dass Sie nicht die Berechtigung haben, diese Bibliothek zu löschen! Tatsächlich aktiviert MySQL-8 Rollen nicht standardmäßig. Ob Rollen aktiviert werden, wird durch den Parameter activate_all_roles_on_login gesteuert.

4): Aktivieren Sie activate_all_roles_on_login

setze @@global.activate_all_roles_on_login=1;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

5): Melden Sie sich erneut bei Tom an und versuchen Sie, die Tempdb-Datenbank zu löschen

mysql -h127.0.0.1 -P3306 -utom -p123456                     
mysql: [Warnung] Die Verwendung eines Passworts in der Befehlszeilenschnittstelle kann unsicher sein.
Willkommen beim MySQL-Monitor. Befehle enden mit ; ​​oder \g.
Ihre MySQL-Verbindungs-ID ist 18
Serverversion: 8.0.13 MySQL Community Server – GPL

Copyright (c) 2000, 2018, Oracle und/oder seine Tochtergesellschaften. Alle Rechte vorbehalten.

Oracle ist eine eingetragene Marke der Oracle Corporation und/oder ihrer
Tochtergesellschaften. Andere Namen können Marken ihrer jeweiligen
Eigentümer.

Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen.

mysql> verwende tempdb;
Datenbank geändert
mysql> Datenbanken anzeigen;
+--------------------+
| Datenbank |
+--------------------+
| Informationsschema |
|mysql |
| Leistungsschema |
|System|
| tempdb |
+--------------------+
5 Zeilen im Satz (0,01 Sek.)

mysql> Datenbank tempdb löschen;                                    
Abfrage OK, 0 Zeilen betroffen (0,09 Sek.)

Oben finden Sie eine ausführliche Erläuterung der neuen Funktion ROLE von MySQL 8. Weitere Informationen zur neuen Funktion ROLE von MySQL 8 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
  • Einführung in MySQL-Rollenfunktionen

<<:  Reine JS-Methode zum Exportieren von Tabellen nach Excel

>>:  Zusammenfassung der Dateninteraktion zwischen Docker-Container und Host

Artikel empfehlen

So legen Sie Hintergrundfarbe und Transparenz in Vue fest

Einstellungen für Hintergrundfarbe und Transparen...

Detaillierte Erklärung von Promises in JavaScript

Inhaltsverzeichnis Grundlegende Verwendung von Pr...

Eine kurze Diskussion zum Erstellen eines Clusters in nodejs

Inhaltsverzeichnis Cluster-Cluster Clusterdetails...

Aktivierungsmethode für Windows Service 2016 Datacenter\Stand\Embedded (2021)

Führen Sie cmd mit Administratorrechten aus slmgr...

...

Windows Server 2019 installieren (grafisches Tutorial)

Windows Server 2019 ist das neueste Server-Betrie...

So implementieren Sie mehrere Parameter in el-dropdown in ElementUI

Aufgrund der zunehmenden Anzahl von Schaltflächen...

Beispielcode zur Implementierung eines 3D-Rotationseffekts mit reinem CSS

Verwenden Sie hauptsächlich die Eigenschaften „pr...

Der Unterschied zwischen KEY, PRIMARY KEY, UNIQUE KEY und INDEX in MySQL

Das im Titel angesprochene Problem lässt sich sch...

Erste Schritte mit benutzerdefinierten Anweisungen in Vue 3.0

Inhaltsverzeichnis 1. Benutzerdefinierte Anweisun...

Lösen Sie das Docker.Socket-Berechtigungsproblem des VSCode-Docker-Plugins

Lösung: Beenden Sie alle mit .vscode in Zusammenh...

Drei Möglichkeiten zum Zeichnen einer Herzform mit CSS

Im Folgenden stellen wir drei Möglichkeiten zum Z...

Der Unterschied zwischen HTML, XHTML und XML

Entwicklungstrends: html (Hypertext-Markup-Sprache...