Wie erstelle ich einen MySQL Benutzer und weise ihm Rechte zu?
MySQL – Create User
MySQL und MariaDB sind die wohl populärsten OpenSource Datenbank Management Systeme. Mithilfe dieser Datenbanken kannst du dynamisch große Mengen an Daten speichern und verwalten. Ein sehr fein unterteiltes Rechtesytem hilft dir dabei, die Zugriffsberechtigungen von unterschiedlichen Benutzern zu steuern.
In diesem Artikel gehen wir die einzelnen Schritte durch, die du brauchst um einen neuen Benutzer zu erstellen und ihm Rechte für eine Datenbank zu geben. Zwar behandeln wir in diesem Artikel MySQL, aber es lassen sich alle Kommandos 1:1 auf MariaDB übertragen.
Benutzer in MySQL erstellen
Zunächst startest du die MySQL Konsole. Dazu öffnest du ein Terminal (bspw. PuTTY oder XTerm) und verbindest dich auf dem Server mit deiner MySQL Installation. Wir benutzen den Benutzer ‘root’ um MySQL aufzurufen. Hast du den Benutzer mit einem Kennwort versehen, benutze folgendes Kommando:
mysql -u root -p
Du wirst dann nach einem Kennwort gefragt. Hast du kein Kennwort gesetzt, verzichtest du einfach auf den Parameter ‘-p’ und du wirst nicht mehr nach einem Kennwort gefragt. Nach der Eingabe solltest du den MySQL Prompt sehen.
Das Erstellen eines neuen Benutzers ist vergleichsweise einfach. Ersetze in dem nachfolgendem Befehl einfach die Werte “benutzer” und “passwort”:
CREATE USER 'benutzer'@'localhost' IDENTIFIED BY 'passwort';
Damit hast du einen Benutzer erstellt. Dieser hat allerdings noch keine Berechtigungen auf irgendeine Datenbank oder Tabelle.
Benutzer anzeigen lassen
Solltest du mal nicht wissen wie viele Benutzer du hast oder welche Namen schon vergeben sind, kannst du dir mit dem Befehl:
select * from mysql.user;
alle Benutzer anzeigen lassen.
Bist du bereit zu starten?
Oder hast du noch Fragen? Lasse dir jetzt dein Konto erstellen oder dich in einem persönlichen Gespräch beraten.
Benutzer in MySQL Rechte zuweisen
Zu Testzwecken erstellen wir erstmal eine neue Datenbank, auf die der Benutzer später zugreifen darf.
CREATE DATABASE meineTestDB;
Wenn du mehr über das erstellen einer Datenbak mithilfe von MySQL erfahren willst, könnte unser Artikel MySQL Datenbank erstellen und löschen interessant für dich sein.
Jetzt kannst du deinem neuen Benutzer Rechte zuweisen. Wir haben ihm erst einmal alle Rechte zugewiesen.
Ersetze wieder den Wert “benutzer” durch deinen Benutzernamen:
GRANT ALL PRIVILEGES ON meineDB . * TO 'benutzer'@'localhost';
Kurz zur Erklärung des Kommandos:
- GRANT ALL PRIVILEGES : Es werden alle verfügbaren Privilegien (Rechte) zugewiesen. Es gibt auch eingeschränkte Privilegien, dazu später mehr.
- ON ‘meineDB’ . * : Hiermit wird genauer spezifiziert, auf welche Bereiche die Rechte zugewiesen werden sollen. Möglich ist auch ‘* . *’, um einem Benutzer zum Beispiel alle Rechte einzuräumen oder die Einschränkung auf einzelne Tabellen einer Datenbank, wie z.B. ”meineDB’ . ‘meineTabelle’’.
- TO ‘benutzer’@’localhost’ : Hierbei handelt es sich um den Benutzer, der diese Rechte erhalten soll.
MySQL hält die Rechte normalerweise im Speicher vor, damit nicht jedes Mal, wenn sich ein Benutzer an der Datenbank anmeldet (was im Zweifel sehr oft sein kann), langsame I/O Operationen durchgeführt werden müssen. Um diese Kopie der Privilegien im Arbeitsspeicher zu updaten, solltest du nach jeder Änderung einmal das Kommando:
FLUSH PRIVILEGES;
ausführen. Vergisst du das Kommando, kann es sein das du dich mit den neuen (oder geänderten) Zugangsdaten noch nicht an dem Datenbankserver anmelden kannst.
Weitere Privilegien in MySQL
Neben dem oben genutzten ‘ALL PRIVILEGES’ kannst du einem Benutzer auch andere Sets an Privilegien in deinem MySQL Server zuweisen. Da sind beispielsweise folgende:
- ALL PRIVILEGES : Ein Wildcard für alle Rechte auf das gewählte Datenbankobjekt, mit einem *.* auf alle Datenbanken.
- CREATE : Erlaubt einem Benutzer, neue Datenbanken zu erstellen
- DROP : Erlaubt einem Benutzer, Datenbanken zu löschen
- DELETE : Erlaubt einem Benutzer, einzelne Zeilen in einer Tabelle zu löschen
- INSERT : Erlaubt einem Benutzer, neue Zeilen in eine Tabelle zu schreiben
- SELECT : Leseberechtigungen auf eine Datenbank oder Tabelle
- UPDATE : Erlaubnis, eine Zeile zu aktualisieren
- GRANT OPTION : Erlaubt einem Benutzer, die Rechte anderer Benutzer zu setzen oder zu widerrufen
Der genaue Syntax ist in der Dokumentation von MySQL sehr gut beschrieben. Du findest sie hier.
Solltest du mal die Rechte deiner Benutzer anzeigen lassen wollen, kannst du diesen Befehl benutzen.
SHOW GRANTS FOR 'benutzer'@'localhost';
Benutzer in MySQL löschen
Einen Benutzer kannst du genauso einfach löschen, wie anlegen. Nutze dazu folgenden Befehl (wie immer den Wert “benutzer” durch deinen Benutzernamen ersetzen):
DROP USER 'benutzer'@'localhost';
Versichere dich, dass du die Privilegien neu geladen hast, nach jeder Änderung an den Rechtetabellen. Zur Erinnerung:
FLUSH PRIVILEGES;
Fazit
In MySQL und MariaDB kann man schnell und einfach neue Benutzer anlegen und ihnen Rechte zuweisen. Wichtig ist, dass du den Überblick über die Rechte deiner Benutzer behälst. Benutzern alle Rechte zuzuweisen ist eher unüblich. Stattdessen solltest du versuchen Benutzern nur die Rechte zuzuweisen, die sie wirklich brauchen.