Zuweisen von Berechtigungen
Jetzt werden wir lernen, verschiedene Arten von Berechtigungen zuzuweisen, um zu steuern, was Benutzer tun können.
Grundlegende Berechtigungsverwaltung
Weisen wir unseren HR-Benutzern einige grundlegende Berechtigungen zu:
-- Gewähren Sie SELECT- und INSERT-Berechtigungen für die Tabelle company_db.employees
GRANT SELECT, INSERT ON company_db.employees TO 'hr_user'@'localhost';
-- Überprüfen Sie die Berechtigungen
SHOW GRANTS FOR 'hr_user'@'localhost';
Der GRANT
-Befehl gibt Benutzern bestimmte Berechtigungen (SELECT, INSERT) für bestimmte Datenbankobjekte. Der SHOW GRANTS
-Befehl zeigt die aktuellen Berechtigungen an.
Erwartete Ausgabe:
+----------------------------------------------------------------------------------------------------------------+
| Grants for hr_user@localhost |
+----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `hr_user`@`localhost` IDENTIFIED BY PASSWORD '*27DB7FC6D35D1F5E6A4C37473D9018DD46DC2944' |
| GRANT SELECT, INSERT ON `company_db`.`employees` TO `hr_user`@`localhost` |
+----------------------------------------------------------------------------------------------------------------+
Unterschiedliche Berechtigungsstufen
MariaDB unterstützt Berechtigungen auf verschiedenen Granularitätsstufen:
-- Globale Berechtigungen (alle Datenbanken)
GRANT CREATE USER ON *.* TO 'intern'@'localhost';
-- Datenbankebenen-Berechtigungen
GRANT ALL PRIVILEGES ON company_db.* TO 'hr_user'@'localhost';
-- Tabellenebenen-Berechtigungen
GRANT SELECT, UPDATE ON company_db.employees TO 'intern'@'localhost';
-- Spaltenebenen-Berechtigungen
GRANT SELECT (name, department), UPDATE (department)
ON company_db.employees TO 'intern'@'localhost';
Die Syntax *.*
bezieht sich auf alle Datenbanken und Tabellen, während database.*
auf alle Tabellen in einer bestimmten Datenbank verweist. Spaltenebenen-Berechtigungen ermöglichen eine feingranulare Zugangskontrolle.
Entzug von Berechtigungen
Um Berechtigungen zu entfernen:
-- Entziehen Sie bestimmte Berechtigungen
REVOKE INSERT ON company_db.employees FROM 'hr_user'@'localhost';
-- Entziehen Sie ALLE Berechtigungen
REVOKE ALL PRIVILEGES ON company_db.employees FROM 'intern'@'localhost';
Verifizieren Sie immer die Berechtigungsänderungen nach dem Entzug mithilfe von SHOW GRANTS
.
MariaDB [(none)]> SHOW GRANTS FOR 'hr_user'@'localhost';
+----------------------------------------------------------------------------------------------------------------+
| Grants for hr_user@localhost |
+----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `hr_user`@`localhost` IDENTIFIED BY PASSWORD '*27DB7FC6D35D1F5E6A4C37473D9018DD46DC2944' |
| GRANT ALL PRIVILEGES ON `company_db`.* TO `hr_user`@`localhost` |
| GRANT SELECT ON `company_db`.`employees` TO `hr_user`@`localhost` |
+----------------------------------------------------------------------------------------------------------------+
MariaDB [(none)]> SHOW GRANTS FOR 'intern'@'localhost';
+---------------------------------------------------------------------------------------------------------------+
| Grants for intern@localhost |
+---------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `intern`@`localhost` IDENTIFIED BY PASSWORD '*A381F474A9DDCAA5BC97DAB83A69431B1C8D8902' |
+---------------------------------------------------------------------------------------------------------------+