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.
Stellen Sie sich vor, Sie sind Datenbankadministrator für ein Unternehmen, das über mehrere Datenbanken verfügt:
Ihre Aufgabe besteht darin, Berechtigungen für einen Benutzer namens „Analyst“ mit den folgenden Anforderungen einzurichten:
Lassen Sie uns untersuchen, wie wir dies mithilfe der GRANT- und REVOKE-Anweisungen von MySQL erreichen können.
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.
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.
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;
Nach dem Einrichten der Berechtigungen ist es wichtig, diese zu überprüfen:
SHOW GRANTS FOR 'analyst'@'%';
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 | ... ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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
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"@"%" | -----------------------------------------------------
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;
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"@"%"| -----------------------------------------------------
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:
Wenn Sie diese Richtlinien und die in diesem Beitrag beschriebenen Schritte befolgen, sind Sie bestens gerüstet, um MySQL-Benutzerberechtigungen effektiv zu verwalten.
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