„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > MySQL-Benutzerberechtigungen: Ein praktischer Leitfaden

MySQL-Benutzerberechtigungen: Ein praktischer Leitfaden

Veröffentlicht am 07.11.2024
Durchsuche:993

MySQL User Permissions: A Practical Guide

In der Welt der Datenbankverwaltung ist die Kontrolle des Benutzerzugriffs von entscheidender Bedeutung für die Aufrechterhaltung der Datenintegrität und -sicherheit. Dieser Blogbeitrag führt Sie durch ein reales Szenario der Einrichtung von MySQL-Benutzerberechtigungen, einschließlich des Prozesses, möglicher Fallstricke und Debugging-Schritte.

Das Szenario

Stellen Sie sich vor, Sie sind Datenbankadministrator für ein Unternehmen, das über mehrere Datenbanken verfügt:

  • Originaldatenbanken: Produkte, Kunden, Bestellungen, Analysen
  • Datenbanken kopieren: products_copy, customer_copy,orders_copy, Analytics_copy

Ihre Aufgabe besteht darin, Berechtigungen für einen Benutzer namens „Analyst“ mit den folgenden Anforderungen einzurichten:

  1. Der Analyst sollte in der Lage sein, Datenbanken und Tabellen aus den Originaldatenbanken anzuzeigen.
  2. Der Analyst sollte nicht in der Lage sein, die Originaldatenbanken zu bearbeiten.
  3. Der Analyst sollte nicht in der Lage sein, neue Datenbanken zu erstellen.
  4. Der Analyst sollte vollen Zugriff (Anzeigen, Bearbeiten, Löschen, Erstellen von Tabellen) auf die „_copy“-Datenbanken haben.

Lassen Sie uns untersuchen, wie wir dies mithilfe der GRANT- und REVOKE-Anweisungen von MySQL erreichen können.

Schritt 1: Ersteinrichtung

Zuerst müssen wir uns mit einem Administratorkonto mit dem MySQL-Server verbinden:

mysql -h hostname -P port -u admin -p

Ersetzen Sie „Hostname“, „Port“ und „Administrator“ durch Ihre tatsächlichen Serverdetails und Ihren Administrator-Benutzernamen.

Schritt 2: Erstellen Sie den Benutzer

Wenn der Benutzer noch nicht existiert, müssen wir ihn erstellen:

CREATE USER 'analyst'@'%' IDENTIFIED BY 'password';

Ersetzen Sie „Passwort“ durch ein starkes, sicheres Passwort.

Schritt 3: Erteilen Sie die erforderlichen Berechtigungen

Jetzt erteilen wir die erforderlichen Berechtigungen:

-- Grant SELECT on original databases
GRANT SELECT ON products.* TO 'analyst'@'%';
GRANT SELECT ON customers.* TO 'analyst'@'%';
GRANT SELECT ON orders.* TO 'analyst'@'%';
GRANT SELECT ON analytics.* TO 'analyst'@'%';

-- Grant all privileges on copy databases
GRANT ALL PRIVILEGES ON products_copy.* TO 'analyst'@'%';
GRANT ALL PRIVILEGES ON customers_copy.* TO 'analyst'@'%';
GRANT ALL PRIVILEGES ON orders_copy.* TO 'analyst'@'%';
GRANT ALL PRIVILEGES ON analytics_copy.* TO 'analyst'@'%';

-- Grant global privileges
GRANT PROCESS, SHOW DATABASES ON *.* TO 'analyst'@'%';

-- Apply the changes
FLUSH PRIVILEGES;

Schritt 4: Berechtigungen überprüfen

Nach dem Einrichten der Berechtigungen ist es wichtig, diese zu überprüfen:

SHOW GRANTS FOR 'analyst'@'%';

Debuggen und Fehlerbehebung

Problem 1: Zu viele Privilegien

In unserem Szenario sind wir zunächst auf ein Problem gestoßen, bei dem „Analyst“ zu viele Berechtigungen hatte:

mysql> SHOW GRANTS FOR 'analyst'@'%';
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
| Grants for analyst@%                                                                                                                                                                                                                                                                                                              |
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO "analyst"@"%" WITH GRANT OPTION |
| GRANT REPLICATION_APPLIER,ROLE_ADMIN ON *.* TO "analyst"@"%" WITH GRANT OPTION                                                                                                                                                                                                                                                    |
...
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 

Lösung:

Um dies zu beheben, haben wir alle Berechtigungen widerrufen und dann nur die notwendigen gewährt:

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'analyst'@'%';
GRANT PROCESS, SHOW DATABASES ON *.* TO 'analyst'@'%';
-- Then re-grant the specific permissions as shown in Step 3

Problem 2: Fehlende Berechtigungen zum Kopieren von Datenbanken

Nachdem wir die übermäßigen Berechtigungen behoben hatten, stellten wir fest, dass die Berechtigungen für die Kopierdatenbanken fehlten:

mysql> SHOW GRANTS FOR 'analyst'@'%';
 ----------------------------------------------------- 
| Grants for analyst@%                                |
 ----------------------------------------------------- 
| GRANT PROCESS, SHOW DATABASES ON *.* TO "analyst"@"%"|
| GRANT SELECT ON "products".* TO "analyst"@"%"       |
| GRANT SELECT ON "customers".* TO "analyst"@"%"      |
| GRANT SELECT ON "orders".* TO "analyst"@"%"         |
| GRANT SELECT ON "analytics".* TO "analyst"@"%"      |
 ----------------------------------------------------- 

Lösung:

Wir haben die fehlenden Zuschüsse für die Kopierdatenbanken hinzugefügt:

GRANT ALL PRIVILEGES ON products_copy.* TO 'analyst'@'%';
GRANT ALL PRIVILEGES ON customers_copy.* TO 'analyst'@'%';
GRANT ALL PRIVILEGES ON orders_copy.* TO 'analyst'@'%';
GRANT ALL PRIVILEGES ON analytics_copy.* TO 'analyst'@'%';
FLUSH PRIVILEGES;

Endergebnis

Nachdem alle diese Änderungen und Korrekturen angewendet wurden, sollten die endgültigen Zuschüsse wie folgt aussehen:

mysql> SHOW GRANTS FOR 'analyst'@'%';
 ----------------------------------------------------- 
| Grants for analyst@%                                |
 ----------------------------------------------------- 
| GRANT PROCESS, SHOW DATABASES ON *.* TO "analyst"@"%"|
| GRANT SELECT ON "products".* TO "analyst"@"%"       |
| GRANT SELECT ON "customers".* TO "analyst"@"%"      |
| GRANT SELECT ON "orders".* TO "analyst"@"%"         |
| GRANT SELECT ON "analytics".* TO "analyst"@"%"      |
| GRANT ALL PRIVILEGES ON "products_copy".* TO "analyst"@"%"|
| GRANT ALL PRIVILEGES ON "customers_copy".* TO "analyst"@"%"|
| GRANT ALL PRIVILEGES ON "orders_copy".* TO "analyst"@"%"|
| GRANT ALL PRIVILEGES ON "analytics_copy".* TO "analyst"@"%"|
 ----------------------------------------------------- 

Abschluss

Das Einrichten der richtigen MySQL-Benutzerberechtigungen kann schwierig sein, ist aber ein entscheidender Aspekt der Datenbankverwaltung. Durch die sorgfältige Verwendung von GRANT- und REVOKE-Anweisungen und die ständige Überprüfung der Ergebnisse können Sie eine sichere und funktionale Umgebung für Ihre Benutzer schaffen.

Bedenken Sie diese wichtigen Punkte:

  1. Beginnen Sie immer mit dem Prinzip der geringsten Rechte.
  2. Verwenden Sie SHOW GRANTS, um Berechtigungen zu überprüfen, nachdem Sie Änderungen vorgenommen haben.
  3. Seien Sie vorsichtig mit globalen Berechtigungen (EIN .).
  4. Vergessen Sie nicht, PRIVILEGES ZU FLUSHEN, nachdem Sie Änderungen vorgenommen haben.

Wenn Sie diese Richtlinien und die in diesem Beitrag beschriebenen Schritte befolgen, sind Sie bestens gerüstet, um MySQL-Benutzerberechtigungen effektiv zu verwalten.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/manojspace/mysql-user-permissions-a-practical-guide-2ldb?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3