Bei der Verwendung einer MySQL, MariaDB oder PostgreSQL Datenbank, welche zu den wohl beliebtesten Open-Source-Lösungen gehören für leistungsstarke SQL-ähnliche Datenbank-Management-Systeme, funktioniert nichts ohne validierte Datenbankbenutzer mit Berechtigungen zum Lesen und Schreiben.
Das funktioniert mit dem Create User Befehl, welchen ich euch in diesem Leitfaden mit Beispielen erklären möchte. Die Anlegung und Verwaltung von Benutzern sind fundamental bei der Administration von Datenbanken. MySQL-Datenbanken und dessen Derivate funktionieren über ein äußerst penibles Berechtigungssystem, welches die Zugriffe streng kontrolliert. Geschieht uns hier auch nur ein kleiner Fehler, sind sowohl die Sicherheit (Integrität) als auch die Funktionalität der Anwendung gefährdet oder gar nicht erst möglich.
Inhaltsverzeichnis: Benutzerverwaltung in MySQL
CREATE USER: Wie erstellt man einen neuen Benutzer in MySQL?
Starten wir damit, wie ein neuer Benutzer für die MySQL-Datenbank erstellt werden kann. Dieser Prozess kann entweder über den interaktiven Datenbankmodus (mysql-Shell) oder direkt aus der Terminalsitzung heraus erfolgen. In beiden Fällen wird ein Root-Benutzer benötigt, der als Datenbankadministrator agiert und die erforderlichen Rechte besitzt, um neue Benutzer anzulegen.
Um einen neuen Benutzer für die Datenbank anzulegen, betreten wir die mysql-Shell. Das erfolgt mit dem folgenden Befehl:
mysql -u root -p
Der Parameter (-p) besagt, dass wir uns mit einem Passwort authentifizieren müssen. Mit dem -u Parameter wählen wir den Root-Benutzer aus, um auf die MySQL-Datenbank zuzugreifen. Nach der Eingabe des Passworts befinden wir uns als angemeldeter Root-Benutzer im interaktiven Modus der Datenbank, der sogenannten mysql-Shell.
Ein Benutzer wird mit dem nachfolgenden Befehl in MySQL angelegt:
CREATE USER 'Benutzername'@'localhost' IDENTIFIED BY 'Passwort';
Befehlszusammenfassung:
Benutzername: Hier kann ein beliebiger Benutzername erstellt werden.
Passwort: Hier geben wir das Passwort für den neuen Benutzer ein.
@: Hier geben wir den Zielserver an, auf dem die Datenbank gehostet wird. Für lokale Arbeiten auf demselben System verwenden wir oft ‚localhost‘. Wenn sich die Datenbank auf einem anderen Hostsystem befindet, können wir entweder die IP-Adresse oder den Hostnamen von dem Datenbank-Server angeben.
Berechtigungen dem neuen Datenbankbenutzer erteilen (GRANT)
Nach der Erstellung eines neuen Benutzers mit CREATE USER müssen in der Regel Berechtigungen für die entsprechenden Datenbanken vergeben werden. Ohne Berechtigungen ist ein Benutzer gewissermaßen nutzlos, da er keine Aktionen in der Datenbank durchführen kann. Dies erfolgt mit dem GRANT-Befehl unter MySQL.
Einigen ist der Befehl möglicherweise aus der Installation von Software wie WordPress oder NextCloud bekannt. Auch in diesen Anleitungen werden neue Benutzer für die Datenbanken angelegt und mit Rechten ausgestattet. Ohne umfassende Berechtigungseinstellungen würden diese Webanwendungen nicht funktionieren, weil Sie auf eine Datenbank einschließlich aller Berechtigungen angewiesen sind.
Um dem soeben erstellten Datenbankbenutzer Berechtigungen zum Lesen, Schreiben und Ändern von Datenbanken und Tabellen einzuräumen, verwenden wir den folgenden Befehl:
GRANT ALL PRIVILEGES ON Datenbankname. * TO 'Benutzer'@'localhost';
In diesem Beispiel haben wir dem Benutzer (ALL) alle Berechtigungen eingeräumt. Dieser Befehl ermöglicht auch die Vergabe anderer Arten von Berechtigungen. Die Syntax für die Erweiterung dieser Befehle lautet wie folgt:
GRANT SELECT: Dies gewährt einem Benutzer das Recht, Daten aus einer oder mehreren Tabellen abzufragen.
GRANT INSERT: Dies ermöglicht einem Benutzer das Einfügen von Daten in eine oder mehrere Tabellen.
GRANT UPDATE: Erlaubt einem Benutzer das Aktualisieren von Daten in einer oder mehreren Tabellen.
GRANT DELETE: Gewährt einem Benutzer das Löschen von Daten aus einer oder mehreren Tabellen. GRANT CREATE: Erlaubt einem Benutzer das Erstellen neuer Datenbanken oder Tabellen.
GRANT DROP: Gewährt einem Benutzer das Löschen von Datenbanken oder Tabellen.
GRANT ALTER: Erlaubt einem Benutzer das Ändern von Tabellenschemata.
GRANT REFERENCES: Gewährt einem Benutzer das Hinzufügen von Fremdschlüsselbeschränkungen.
GRANT EXECUTE: Erlaubt einem Benutzer das Ausführen von gespeicherten Prozeduren oder Funktionen.
GRANT ALL PRIVILEGES: Wie bereits erwähnt, gewährt dies einem Benutzer alle verfügbaren Berechtigungen für eine bestimmte Datenbank oder Tabelle.
Verwendung des FLUSH PRIVILEGES Befehls unter MySQL
Nachdem Berechtigungen zugewiesen wurden, müssen die neuen Änderungen noch wirksam gemacht werden. Dafür gibt es den FLUSH PRIVILEGES Befehl unter MySQL. Dieser Befehl erzwingt eine Aktualisierung der Daten im Arbeitsspeicher, aus dem die Datenbank die neuen Benutzerberechtigungen liest (Cache leeren).
Privilegien zuweisen und wirksam machen:
FLUSH PRIVILEGES;
An diesem Punkt sollte der Datenbankbenutzer über alle erforderlichen Berechtigungen an der Datenbank verfügen. Neue Datenbanken lassen sich jederzeit mit dem CREATE-Befehl erstellen. Es gibt in der MySQL-Syntax noch weitere Befehle, die ich euch abschließend noch zusammenfassen möchte:
CREATE: Ermöglicht einem Benutzer, neue Datenbanken zu erstellen.
DROP: Ermöglicht einem Benutzer, eine Datenbank oder einen bestehenden Benutzer zu entfernen.
DELETE: Ermöglicht einem Benutzer, einzelne Zeilen in einer Tabelle zu löschen.
INSERT: Ermöglicht einem Benutzer, neue Zeilen in einer Tabelle zu erstellen.
SELECT: Leserechte für eine Datenbank oder Tabelle AKTUALISIEREN: Berechtigung zum Aktualisieren einer Zeile
GRANT OPTION: Ermöglicht einem Benutzer, die Rechte anderer Benutzer zu setzen oder zu widerrufen.
Entfernen eines Benutzers aus der MySQL-Datenbank (Löschvorgang)
In diesem Beitrag haben wir die Erstellung eines neuen Datenbankbenutzers behandelt. Was für einen umfassenden Leitfaden noch fehlt, ist die Entfernung, also das Löschen eines Benutzers aus der bestehenden Datenbank. Dies erfordert lediglich einen einzelnen Befehl, den ich euch anhand des folgenden Beispiels zeigen möchte.
Einen Benutzer aus der MySQL-Datenbank entfernen:
DROP USER 'Benutzername'@'localhost';
Anschließend müssen die Privilegien einmalig neu geladen werden, damit auch diese Änderungen direkt wirksam werden und der Benutzer erfolgreich entfernt wurde. Wir haben die Erstellung eines Benutzers mit dem CREATE USER-Befehl besprochen und uns die Grundbefehle der MySQL-Syntax genauer angeschaut. Damit ist dieser Leitfaden komplett. Bei Fragen oder Anregungen könnt ihr gerne die Kommentarfunktion unter dem Beitrag verwenden.