Einleitung
MySQL ist eine der beliebtesten relationalen Datenbanken. Sie ermöglicht die Einrichtung mehrerer Benutzer mit unterschiedlichen Zugriffsrechten und Berechtigungen. Die Verwaltung von Benutzerkonten und Zugriffsrechten ist entscheidend für die Sicherheit der Datenbank und stellt sicher, dass ausschließlich autorisierte Benutzer über die entsprechenden Zugriffsrechte verfügen, um ihre Aufgaben zu erfüllen. Wenn du neu in MySQL bist oder lernen möchtest, wie man einen neuen Benutzer anlegt und Berechtigungen vergibt, bist du hier genau richtig! In diesem Artikel zeigen wir euch Schritt für Schritt, wie ihr Benutzer in MySQL erstellen und Rechte vergeben könnt. Außerdem erklären wir dir auch, wie Du Berechtigungen einrichten und den Zugriff auf die Datenbank verwalten kannst. Egal, ob Du Entwickler, Datenbankadministrator oder einfach nur daran interessiert bist, MySQL zu erlernen, dieser Artikel wird Dich durch den Prozess der Erstellung und Verwaltung von Benutzern in MySQL führen, um die Sicherheit deiner Datenbank und die Zugriffskontrolle zu verbessern.
Wenn Du wissen möchten, wie Du eine MySQL-Datenbank in einem Objektspeicher (z. B. einem S3-kompatiblen Objektspeicher von Contabo) sichern kannst, schau dir doch mal diesen Artikel an.
Voraussetzungen
Um diesem Tutorial folgen zu können, benötigst du Zugang zu einer MySQL-Datenbank. In unserem Beispiel haben wir eine MySQL Datenbank auf einem Virtual Private Server (VPS) laufen. Als Betriebssystem kommt Ubuntu (alternativ geht auch Debian) zum einsatz. Die Schritte zur Erstellung eines neuen MySQL-Benutzers und zur Zuweisung von Berechtigungen ist jedoch im Allgemeinen ähnlich, unabhängig vom zugrunde liegenden Betriebssystem des Servers.
MySQL Benutzer erstellen
Nach der Installation von MySQL wird automatisch ein Root-Benutzerkonto erstellt, das volle Rechte für den MySQL-Server gewährt, einschließlich der Kontrolle über alle Datenbanken, Tabellen und Benutzer. Es wird jedoch empfohlen, die Verwendung des Root-Kontos auf administrative Aufgaben zu beschränken. In diesem Abschnitt wird detailliert beschrieben, wie Du den Root-MySQL-Benutzer verwendest, um ein neues Benutzerkonto zu erstellen und entsprechende Berechtigungen zuzuweisen.
Um sich bei deinem MySQL-Server als root anzumelden, nutze folgenden Befehl:
mysql –u root –p
Nun wirst du aufgefordert, dein Root-Passwort einzugeben.
Da du nun Zugriff auf die MySQL-Kommandozeile hast, kannst du mit dem Befehl „CREATE USER“ einen neuen Benutzer erstellen. Die Syntax des Befehl lautet wie folgt:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
Nach dem Befehl „CREATE USER“ musst Du zuerst einen Benutzernamen vergeben, gefolgt von einem „@“-Zeichen und dem Hostnamen, von dem aus sich der Benutzer verbinden soll. Wenn Du nur den lokalen Zugriff von Deinem lokalen Server aus zulassen willst, kannst Du als Hostnamen „localhost“ angeben. Die Angabe des Benutzernamens und des Hostnamens in einfachen Anführungszeichen ist zwar nicht immer zwingend erforderlich, kann aber zur Vermeidung möglicher Fehler beitragen.
Berechtigungen an Nutzer vergeben
Der Zweck der Vergabe von Berechtigungen an einen Benutzer in MySQL besteht darin, die Aktionen und Operationen zu definieren, die der Benutzer auf einer Datenbank oder bestimmten Datenbankobjekten wie Tabellen, Ansichten, Prozeduren und Funktionen durchführen darf. Die Berechtigungen bestimmen den Grad des Zugriffs und der Kontrolle, die ein Benutzer über die Datenbank und ihre Objekte hat.
Durch die Gewährung von Privilegien kannst du kontrollieren, welche Aktionen ein Benutzer durchführen kann. Dazu gehören Dinge wie das Erstellen, Ändern oder Löschen von Daten sowie die Verwaltung von Datenbankstrukturen und -konfigurationen. Mit Berechtigungen kannst du eine fein abgestimmte Zugriffskontrolle festlegen. Dadurch wird sichergestellt, dass die Benutzer über die erforderlichen Berechtigungen verfügen, um die ihnen zugedachten Aufgaben auszuführen, während sie gleichzeitig vor nicht autorisierten Aktionen geschützt werden. Damit verringest Du das Risiko, dass ein Benutzer die Sicherheit oder Integrität der Datenbank gefährden könnte.
Allgemeine Syntax
GRANT PRIVILEGE ON database.table TO 'username'@'host';
Vergabe von Privilegien
Der PRIVILEGE-Wert in der angegebenen Syntax bestimmt die Aktionen, die ein Benutzer in der angegebenen Datenbank und Tabelle durchführen darf. Demselben Benutzer können in einem einzigen Befehl mehrere Privilegien gewährt werden, die durch Kommata getrennt sind. Außerdem können globale Zugriffsrechte durch die Verwendung von Sternchen (*) anstelle von bestimmten Datenbank- und Tabellennamen gewährt werden, da Sternchen in SQL für „alle“ Datenbanken oder Tabellen stehen.
Zum Beispiel gewährt der folgende Befehl einem Benutzer die folgenden globalen Privilegien, Aktionen auf Datenbanken, Tabellen und Benutzer:
CREATE
ALTER
DROP
Außerdem kann der Benutzer INSERT-, UPDATE- und DELETE-Operationen für jede Tabelle durchführen, Daten mit SELECT abfragen, Fremdschlüssel mit REFERENCES erstellen und FLUSH-Operationen mit RELOAD-Rechten durchführen.
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'username'@'localhost' WITH GRANT OPTION;
Es ist jedoch wichtig, Benutzern nur die Rechte zu gewähren, die sie tatsächlich benötigen, und die Benutzerrechte entsprechend anzupassen.
Die vollständige Liste der verfügbaren Berechtigungen findest du in der offiziellen MySQL-Dokumentation hier.
Manche Benutzer benötigen alle Berechtigungen (z.B. wenn Sie einen Benutzer zur Installation von WordPress oder Nextcloud anlegen wollen). Tausche dazu die Namen der einzelnen Berechtigungen gegen das Wort „all“ aus. Der Befehl sieht dann wie folgt aus:
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost';
Datenbank aktualisieren
Um die Berechtigungen eines Benutzers zu aktualisieren, nutze den folgenden Befehl:
FLUSH PRIVILEGES;
Berechtigungen eines Benutzers entziehen
Wenn du eine Berechtigung widerrufen musst, ist die Struktur fast identisch mit der Erteilung der Berechtigung:
REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host';
Bedenke, dass beim Entzug von Berechtigungen die Syntax verlangt, dass Du FROM und nicht TO verwendest. TO würde man verwenden, wenn die Berechtigungen gewährt werden.
Weitere nützliche MySQL Befehle
Berechtigungen eines Benutzers auflisten
SHOW GRANTS FOR 'username'@'host';
Benutzer löschen
DROP USER 'username'@'localhost';
Datenbank verlassen
exit;