Hosten Sie Ihren eigenen KI-Agenten mit OpenClaw - kostenlose 1-Klick-Installation!

MySQL Benutzer erstellen und Berechtigungen: Vollständiger Guide

MySQL Benutzer erstellen und Berechtigungen: Vollständiger Guide (Titelbild)

Das Ausführen deiner gesamten MySQL-Instanz unter dem Root-Konto ist das Datenbankäquivalent dazu, die Vordertür deines Servers unverschlossen zu lassen. Hier erfährst du, wie du Benutzer mit den richtigen Berechtigungen erstellst und nicht mehr.

Voraussetzungen: MySQL-Zugriff und Einrichtung

Du benötigst eine bestehende MySQL-Installation und die Möglichkeit, dich als Root oder als Benutzer mit GRANT OPTION-Berechtigungen anzumelden:

mysql -u root -p

Gib dein Root-Passwort ein, wenn du dazu aufgefordert wirst. Von hier aus kannst du Benutzer erstellen, Berechtigungen zuweisen und die gesamte Zugriffskontrollebene verwalten.

Wie man einen MySQL-Benutzer erstellt

CREATE USER-Anweisungssyntax

Die vollständige Syntax zum Erstellen eines MySQL-Benutzers:

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

Der Host-Teil steuert, woher Verbindungen kommen können. localhost schränkt auf nur auf lokale Verbindungen ein. % erlaubt Verbindungen von jedem Host. Du kannst auch eine IP-Adresse oder ein Subnetz angeben.

Einen Benutzer mit einem Passwort erstellen

Erstelle einen lokalen Benutzer mit dem Namen appuser:

CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';

Unter MySQL 8.0+ ist das Standard-Authentifizierungs-Plugin caching_sha2_password. Ältere Clients benötigen möglicherweise stattdessen mysql_native_password:

CREATE USER 'appuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'StrongPassword123!';

Einen Benutzer für den Remote-Zugriff erstellen

Erlaube Verbindungen von jedem Host, indem du % als Hostwert verwendest:

CREATE USER 'remoteuser'@'%' IDENTIFIED BY 'RemotePassword456!';

Für eine strengere Kontrolle beschränke dich auf eine bestimmte IP:

CREATE USER 'remoteuser'@'192.168.1.100' IDENTIFIED BY 'RemotePassword456!';

Wie Berechtigungen in MySQL gewährt werden

Alle Berechtigungen für eine Datenbank gewähren

Gewähre einem Benutzer vollen Zugriff auf eine bestimmte Datenbank:

GRANT ALL PRIVILEGES ON mydatabase.* TO 'appuser'@'localhost';

Die *.*-Syntax gewährt Berechtigungen für alle Datenbanken, was du nur für Administratorkonten verwenden solltest.

Spezifische Berechtigungen gewähren

Das Prinzip der geringsten Berechtigung ist der richtige Ansatz. Ein Benutzer für schreibgeschützte Berichterstattung benötigt nur SELECT:

GRANT SELECT ON mydatabase.* TO 'readonly_user'@'localhost';

Eine Anwendung, die nur Datensätze liest und schreibt:

GRANT SELECT, INSERT, UPDATE, DELETE ON mydatabase.* TO 'appuser'@'localhost';

Zu den verfügbaren Berechtigungen gehören: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, EXECUTE und mehr.

Anwenden von Berechtigungsänderungen mit FLUSH PRIVILEGES

Nach dem Vergeben der Berechtigungen solltest du die Grant-Tabellen neu laden, damit die Änderungen sofort wirksam werden:

FLUSH PRIVILEGES;

MySQL 8.0 wendet GRANT und REVOKE automatisch an, aber die Ausführung von FLUSH PRIVILEGES ist immer noch eine gute Praxis, wenn Systemtabellen direkt geändert werden.

Wie man gewährte Berechtigungen anzeigt

Überprüfe, welche Berechtigungen ein Benutzer derzeit hat:

SHOW GRANTS FOR 'appuser'@'localhost';

Für den aktuell angemeldeten Benutzer:

SHOW GRANTS FOR CURRENT_USER();

Wie man MySQL-Benutzer widerruft und entfernt

Widerrufen spezifischer Berechtigungen

Schreibzugriff entfernen und Lesezugriff beibehalten:

REVOKE INSERT, UPDATE, DELETE ON mydatabase.* FROM 'appuser'@'localhost';

Dann die Änderungen laden:

FLUSH PRIVILEGES;

Einen MySQL-Benutzeraccount löschen

Einen Benutzer vollständig entfernen:

DROP USER 'appuser'@'localhost';

Dadurch werden das Benutzerkonto und alle damit verbundenen Berechtigungen entfernt. Überprüfe, ob der Benutzer entfernt wurde:

SELECT User, Host FROM mysql.user;

Best Practices für die MySQL-Benutzersicherheit

  • Verwende niemals das Root-Konto für Anwendungsverbindungen. Erstelle dedizierte Benutzer pro Anwendung.
  • Gewähre nur die Berechtigungen, die die Anwendung tatsächlich benötigt. Ein CMS benötigt SELECT, INSERT, UPDATE, DELETE. Es braucht weder DROP noch ALTER.
  • Verwende starke, einzigartige Passwörter. Speichere sie in Umgebungsvariablen oder einem Secrets-Manager, nicht im Code.
  • Zugriffsrechte auf Hosts einschränken. Verwende nach Möglichkeit localhost oder eine bestimmte IP anstelle von %.
  • Überprüfe deine Benutzerliste regelmäßig: SELECT User, Host FROM mysql.user

FAQ: MySQL Benutzer erstellen

Wie erstelle ich einen neuen Benutzer in MySQL?

Führe Folgendes aus: CREATE USER ‚Benutzername’@’localhost‘ IDENTIFIED BY ‚passwort‘; Gewähre dann die entsprechenden Berechtigungen mit GRANT … ON datenbank.* TO ‚benutzername’@’localhost‘;

Wie gewähre ich alle Berechtigungen in MySQL?

Führe Folgendes aus: GRANT ALL PRIVILEGES ON databasename.* TO ‚username’@’host‘; Führe anschliessend FLUSH PRIVILEGES; aus, um die Änderungen sofort wirksam zu machen.

Wie sehe ich, welche Berechtigungen ein MySQL-Benutzer hat?

Führe Folgendes aus: SHOW GRANTS FOR ‚username’@’host‘; Dadurch werden alle Berechtigungen aufgelistet, die diesem Benutzer zugewiesen sind.

Wie widerrufe ich Berechtigungen in MySQL?

Führe Folgendes aus: REVOKE privilege_type ON database.* FROM ‚username’@’host‘; Gib genau an, welche Berechtigungen entfernt werden sollen. Danach FLUSH PRIVILEGES;

Nach oben scrollen