15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen
01.11.2024
1 +1

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 OPTION Berechtigungen
  • 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 -p

Sie 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:

ParameterBeschreibung
usernameDer Name, den Sie dem neuen Benutzer zuweisen möchten
hostDer 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
passwordEin 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:

ParameterBeschreibung
privilegesEine kommagetrennte Liste von Berechtigungen (z. B. SELECT, INSERT, UPDATE, DELETE) oder ALL PRIVILEGES
database.tableDer 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@hostDas Zielbenutzer-Konto

Häufige MySQL-Berechtigungen

BerechtigungBeschreibung
SELECTDaten aus Tabellen lesen
INSERTNeue Zeilen zu Tabellen hinzufügen
UPDATEVorhandene Zeilen ändern
DELETEZeilen aus Tabellen entfernen
CREATENeue Datenbanken oder Tabellen erstellen
DROPDatenbanken oder Tabellen löschen
INDEXIndizes erstellen oder löschen
ALTERTabellenstrukturen ändern
ALL PRIVILEGESVollständiger Zugriff (mit Vorsicht verwenden)
GRANT OPTIONDem 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

15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen