MySQL-Benutzer- und Berechtigungsverwaltung

MySQLMySQLBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir die Benutzerverwaltung und -berechtigungen in MariaDB untersuchen, essentielle Fähigkeiten für die Sicherung Ihres Datenbanksystems. Sie werden lernen, wie Sie Benutzerkonten erstellen und verwalten, passende Berechtigungen zuweisen und die Berechtigungen anzeigen. Durch praktische Übungen werden Sie praktische Erfahrungen mit diesen wichtigen Sicherheitsoperationen für Datenbanken sammeln und verstehen, wie Sie grundlegende Sicherheitsmaßnahmen in MariaDB implementieren. Dieses Wissen ist für jeden Datenbankadministrator von grundlegender Bedeutung, um eine ordnungsgemäße Zugangskontrolle und Datenschutz zu gewährleisten.

Dies ist ein Guided Lab, das schrittweise Anweisungen bietet, um Ihnen beim Lernen und Üben zu helfen. Befolgen Sie die Anweisungen sorgfältig, um jeden Schritt abzuschließen und praktische Erfahrungen zu sammeln. Historische Daten zeigen, dass dies ein Labor der Stufe Anfänger mit einer Abschlussquote von 96% ist. Es hat eine positive Bewertungsrate von 100% von den Lernenden erhalten.

Erstellen und Verwalten von Benutzerkonten

Zunächst verbinden Sie sich als root mit MySQL:

sudo mysql -u root

Benutzer erstellen

Erstellen wir Benutzer mit verschiedenen Zugriffsmustern:

-- Erstellen Sie einen Benutzer, der nur von localhost aus verbinden kann
CREATE USER 'hr_user'@'localhost' IDENTIFIED BY 'hr123';

-- Erstellen Sie einen Benutzer, der von jedem Host aus verbinden kann
CREATE USER 'reports_user'@'%' IDENTIFIED BY 'reports123';

-- Erstellen Sie einen Benutzer ohne Passwort (nicht empfohlen für Produktionsumgebungen)
CREATE USER 'intern'@'localhost';

Das @'localhost' beschränkt die Verbindungen auf den lokalen Rechner, während @'%' Verbindungen von jedem Host aus ermöglicht. Das Erstellen von Benutzern ohne Passwort wird für Produktionsumgebungen nicht empfohlen.

Um die von uns erstellten Benutzer anzuzeigen:

SELECT User, Host FROM mysql.user;

Die erwartete Ausgabe zeigt alle Benutzer im System:

+--------------+-----------+
| User         | Host      |
+--------------+-----------+
| reports_user | %         |
| hr_user      | localhost |
| intern       | localhost |
| mariadb.sys  | localhost |
| mysql        | localhost |
| root         | localhost |
+--------------+-----------+

Verwaltung bestehender Benutzer

Um bestehende Benutzer zu ändern:

-- Ändern Sie das Passwort eines Benutzers
SET PASSWORD FOR 'intern'@'localhost' = PASSWORD('intern123');

-- Fordern Sie den Benutzer auf, das Passwort beim nächsten Login zu ändern
ALTER USER 'hr_user'@'localhost' PASSWORD EXPIRE;

Die Option PASSWORD EXPIRE zwingt Benutzer, ihr Passwort beim nächsten Login zu ändern - nützlich für temporäre Passwörter.

Um einen Benutzer zu entfernen:

-- Entfernen Sie einen Benutzer
DROP USER 'reports_user'@'%';

Nach dem Entfernen des Benutzers überprüfen Sie, ob die Benutzerliste aktualisiert wurde:

+-------------+-----------+
| User        | Host      |
+-------------+-----------+
| hr_user     | localhost |
| intern      | localhost |
| mariadb.sys | localhost |
| mysql       | localhost |
| root        | localhost |
+-------------+-----------+

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' |
+---------------------------------------------------------------------------------------------------------------+

Zusammenfassung

In diesem Lab haben wir die wesentlichen Aspekte der Benutzer- und Berechtigungsverwaltung in MariaDB behandelt:

  1. Erstellen und Verwalten von Benutzerkonten mit verschiedenen Verbindungsbeschränkungen
  2. Zuweisen und Entziehen von Berechtigungen auf verschiedenen Ebenen (global, Datenbank, Tabelle, Spalte)

Diese Fähigkeiten sind von grundlegender Bedeutung für die Sicherung Ihrer MariaDB-Installation und die Implementierung einer ordnungsgemäßen Zugangskontrolle. Das Verständnis der Benutzerverwaltung und -berechtigungen ist entscheidend für die Aufrechterhaltung der Datenbanksicherheit und die Gewährleistung, dass Benutzer angemessenen Zugang zu Datenbankressourcen haben.