Wie man einen neuen Benutzer in MySQL erstellt und Berechtigungen setzt
MySQL bleibt eines der am weitesten verbreiteten relationalen Datenbankmanagementsysteme der Welt und treibt alles an – von kleinen persönlichen Projekten bis hin zu unternehmensweiten Anwendungen. Egal ob Sie ein Entwickler, Systemadministrator oder Geschäftsinhaber sind, der Ihre eigene Infrastruktur verwaltet – das Verständnis für die Erstellung von MySQL-Benutzern und die Konfiguration ihrer Berechtigungen ist eine unverzichtbare Fähigkeit zur Aufrechterhaltung einer sicheren, gut organisierten Datenbankumgebung.
Schlechte Benutzerverwaltung ist eine der Hauptursachen für Datenbankbefunde. Das Gewähren übermäßiger Privilegien, die Wiederverwendung von Anmeldedaten oder das Belassen von Standardkonten können Ihre gesamte Datenschicht unnötigen Risiken aussetzen. Dieser Leitfaden führt Sie durch den gesamten Prozess – vom Anmelden bei MySQL bis zur Überprüfung von Berechtigungen – mit klaren Befehlen, praktischen Beispielen und Best Practices für die Sicherheit bei jedem Schritt.
Warum MySQL-Benutzerverwaltung wichtig ist
Bevor wir in die Befehle eintauchen, lohnt es sich zu verstehen, *warum* dies wichtig ist. MySQL arbeitet nach dem Prinzip der geringsten Berechtigung: Jeder Benutzer sollte nur Zugriff auf die spezifischen Datenbanken, Tabellen und Operationen haben, die er wirklich benötigt. Dies minimiert den Umfang eines kompromittierten Kontos und macht die Überprüfung viel einfacher.
Wenn Sie MySQL auf einem verwalteten VPS Hosting-Plan oder einem Dedicated Server ausführen, haben Sie vollständigen Root-Zugriff auf Ihre MySQL-Instanz, was Ihnen vollständige Kontrolle über die Benutzererstellung und Berechtigungsverwaltung gibt. Viele Kontrollpanel-Umgebungen – wie die mit VPS mit cPanel verfügbaren – bieten auch eine grafische Benutzeroberfläche für die MySQL-Verwaltung, die den hier beschriebenen Befehlszeilenansatz ergänzen kann.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass Sie folgende Voraussetzungen erfüllen:
- MySQL 5.7+ oder MySQL 8.0+ auf Ihrem Server installiert und ausgeführt
- Root-Zugriff oder Zugriff auf ein MySQL-Superuser-Konto mit
GRANT OPTIONBerechtigungen - Terminal-Zugriff (Linux/macOS) oder Eingabeaufforderung / PowerShell (Windows)
Schritt 1: Anmelden bei MySQL
Um Benutzer und Berechtigungen zu verwalten, müssen Sie sich als Benutzer mit ausreichenden administrativen Berechtigungen authentifizieren. In den meisten Fällen ist dies das root Konto.
Öffnen Sie Ihr Terminal oder die Eingabeaufforderung
- Linux / macOS: Öffnen Sie Ihre Terminal-Anwendung
- Windows: Öffnen Sie die Eingabeaufforderung oder PowerShell
Verbindung zum MySQL-Server herstellen
Führen Sie den folgenden Befehl aus:
mysql -u root -pSie werden aufgefordert, das Root-Passwort einzugeben. Nach erfolgreicher Authentifizierung sehen Sie die MySQL-Eingabeaufforderung:
mysql>> Sicherheitstipp: Wenn Sie sich mit einem Remote-MySQL-Server verbinden, geben Sie den Host mit dem -h Flag an:
> “`bash
> mysql -u root -p -h your_server_ip
> “`
Schritt 2: Einen neuen MySQL-Benutzer erstellen
Sobald Sie sich in der MySQL-Shell befinden, können Sie einen neuen Benutzer mit der CREATE USER Anweisung erstellen.
Syntax
CREATE USER 'username'@'host' IDENTIFIED BY 'password';Parameteraufschlüsselung:
| Parameter | Beschreibung |
|---|---|
username | Der Name, den Sie dem neuen Benutzer zuweisen möchten |
host | Der Host, von dem aus der Benutzer eine Verbindung herstellen darf. Verwenden Sie localhost für lokalen Zugriff nur oder % als Platzhalter für jeden Host |
password | Ein starkes, eindeutiges Passwort für diesen Benutzer |
Beispiel: Erstellen Sie einen Benutzer, der von jedem Host aus zugänglich ist
CREATE USER 'newuser'@'%' IDENTIFIED BY 'StrongP@ssw0rd!';Beispiel: Erstellen Sie einen Benutzer, der auf Localhost beschränkt ist
CREATE USER 'localuser'@'localhost' IDENTIFIED BY 'AnotherStr0ng#Pass';> Best Practice: Beschränken Sie Benutzer nach Möglichkeit auf localhost oder eine spezifische IP-Adresse, anstatt % zu verwenden. Der Platzhalter-Host-Zugriff vergrößert Ihre Angriffsfläche unnötig.
MySQL 8.0 Hinweis zu Authentifizierungs-Plugins
MySQL 8.0 führte caching_sha2_password als Standard-Authentifizierungs-Plugin ein, was zu Kompatibilitätsproblemen mit älteren Clients oder Anwendungen führen kann. Falls erforderlich, können Sie die Authentifizierungsmethode explizit festlegen:
CREATE USER 'newuser'@'%' IDENTIFIED WITH mysql_native_password BY 'StrongP@ssw0rd!';Schritt 3: Berechtigungen für den Benutzer gewähren
Das Erstellen eines Benutzers gewährt ihm nicht automatisch Zugriff auf eine Datenbank. Sie müssen Berechtigungen explizit mit der GRANT Anweisung zuweisen.
Syntax
GRANT privileges ON database.table TO 'username'@'host';Parameteraufschlüsselung:
| Parameter | Beschreibung |
|---|---|
privileges | Eine kommagetrennte Liste von Berechtigungen (z. B. SELECT, INSERT, UPDATE, DELETE) oder ALL PRIVILEGES |
database.table | Der Umfang der Berechtigung. Verwenden Sie *.* für alle Datenbanken und Tabellen, dbname.* für alle Tabellen in einer spezifischen Datenbank, oder dbname.tablename für eine einzelne Tabelle |
username@host | Das Zielbenutzer-Konto |
Häufige MySQL-Berechtigungen
| Berechtigung | Beschreibung |
|---|---|
SELECT | Daten aus Tabellen lesen |
INSERT | Neue Zeilen zu Tabellen hinzufügen |
UPDATE | Vorhandene Zeilen ändern |
DELETE | Zeilen aus Tabellen entfernen |
CREATE | Neue Datenbanken oder Tabellen erstellen |
DROP | Datenbanken oder Tabellen löschen |
INDEX | Indizes erstellen oder löschen |
ALTER | Tabellenstrukturen ändern |
ALL PRIVILEGES | Vollständiger Zugriff (mit Vorsicht verwenden) |
GRANT OPTION | Dem Benutzer erlauben, Berechtigungen an andere zu gewähren |
Beispiel: Vollständigen Zugriff auf eine spezifische Datenbank gewähren
GRANT ALL PRIVILEGES ON exampledb.* TO 'newuser'@'%';Beispiel: Schreibgeschützten Zugriff gewähren
GRANT SELECT ON exampledb.* TO 'readonly_user'@'localhost';Beispiel: Spezifische Berechtigungen für eine einzelne Tabelle gewähren
GRANT SELECT, INSERT, UPDATE ON exampledb.orders TO 'app_user'@'localhost';Beispiel: Globale Berechtigungen gewähren (sparsam verwenden)
GRANT ALL PRIVILEGES ON *.* TO 'admin_user'@'localhost' WITH GRANT OPTION;> Warnung: Das Gewähren von ALL PRIVILEGES ON *.* gibt einem Benutzer Superuser-ähnlichen Zugriff. Reservieren Sie dies nur für vertrauenswürdige administrative Konten.
Schritt 4: Berechtigungen aktualisieren
Nach Änderungen an Benutzerberechtigungen ist es eine gute Praxis, die Berechtigungstabellen neu zu laden, damit MySQL Ihre Änderungen sofort erkennt:
FLUSH PRIVILEGES;> Hinweis: In modernen Versionen von MySQL (5.7.3+) wird FLUSH PRIVILEGES automatisch nach GRANT, REVOKE und CREATE USER Anweisungen ausgelöst. Das explizite Ausführen nach manuellen Änderungen an den mysql Systemtabellen (über INSERT oder UPDATE) bleibt jedoch wesentlich.
Schritt 5: Benutzerberechtigungen überprüfen
Bestätigen Sie immer, dass die von Ihnen festgelegten Berechtigungen korrekt sind, bevor Sie ein Benutzerkonto in Produktion nehmen.
Berechtigungen für einen spezifischen Benutzer überprüfen
SHOW GRANTS FOR 'newuser'@'%';Beispielausgabe:
+--------------------------------------------------------------+
| Grants for newuser@% |
+--------------------------------------------------------------+
| GRANT USAGE ON *.* TO `newuser`@`%` |
| GRANT ALL PRIVILEGES ON `exampledb`.* TO `newuser`@`%` |
+--------------------------------------------------------------+Alle MySQL-Benutzer auflisten
SELECT user, host FROM mysql.user;Überprüfen Sie die Berechtigungen des aktuellen Benutzers
SHOW GRANTS;Schritt 6: Berechtigungen widerrufen (falls erforderlich)
Berechtigungen ändern sich im Laufe der Zeit. Wenn ein Benutzer keinen bestimmten Zugriff mehr benötigt, widerrufen Sie ihn sofort mit der REVOKE Anweisung:
Syntax
REVOKE privileges ON database.table FROM 'username'@'host';Beispiel: Alle Berechtigungen von einem Benutzer widerrufen
REVOKE ALL PRIVILEGES ON exampledb.* FROM 'newuser'@'%';
FLUSH PRIVILEGES;Beispiel: Eine spezifische Berechtigung widerrufen
REVOKE DELETE ON exampledb.orders FROM 'app_user'@'localhost';Schritt 7: Einen Benutzer löschen (falls erforderlich)
Wenn ein Benutzerkonto nicht mehr benötigt wird, entfernen Sie es vollständig, um unnötige Zugriffsvektoren zu eliminieren:
DROP USER 'newuser'@'%';Dieser Befehl entfernt das Benutzerkonto und alle zugehörigen Berechtigungen in einer einzigen Operation.
MySQL-Benutzerverwaltung in gehosteten Umgebungen
Wenn Sie MySQL in einer gemeinsamen oder verwalteten Hosting-Umgebung verwalten, kann der Prozess je nach Ihrem Kontrollpanel leicht unterschiedlich sein. Plattformen wie cPanel, Plesk und DirectAdmin bieten grafische Benutzeroberflächen zum Erstellen von MySQL-Benutzern und zum Zuweisen von Berechtigungen, ohne SQL direkt zu schreiben.
Für Benutzer, die vollständige Befehlszeilenkontrolle ohne den Overhead eines dedizierten Servers benötigen, bieten VPS Hosting Pläne das ideale Gleichgewicht zwischen Leistung, Flexibilität und Kosten. Wenn Sie datenbankintensive Anwendungen ausführen, die maximalen Durchsatz und isolierte Ressourcen erfordern, erwägen Sie ein Upgrade auf einen Dedicated Server für garantierte Leistung.
Für kleinere Projekte oder Entwicklungsumgebungen enthalten Shared Web Hosting Pläne normalerweise phpMyAdmin-Zugriff, das eine browserbasierte Benutzeroberfläche für die MySQL-Benutzer- und Datenbankverwaltung bietet.
Wenn Ihre Anwendung sensible Benutzerdaten verarbeitet, stellen Sie außerdem sicher, dass Sie Ihren Datenbankserver mit einem gültigen SSL-Zertifikat koppeln, um sicherzustellen, dass die zwischen Ihrer Anwendung und dem Datenbankserver übertragenen Daten verschlüsselt und vor Abfangen geschützt bleiben.
Sicherheits-Best Practices für die MySQL-Benutzerverwaltung
Die Befolgung der technischen Schritte ist nur die halbe Arbeit. Hier sind kritische Sicherheitspraktiken
