Benutzer in MySQL mit CREATE USER erstellen

Um einen neuen Benutzer in MySQL anlegen zu können, benötigen Sie neben dem Zugriff auf die jeweilige Datenbank ausreichende Administratorrechte oder Superuser-Privilegien, die es Ihnen ermöglichen, Benutzerkonten zu erstellen und Berechtigungen zu verwalten. Sie müssen auch wissen, welche Art von Zugriff der neue Benutzer benötigt: Leserechte, Schreibrechte oder sogar administrative Rechte.

MySQL-User erstellen

Bei der Installation des Datenbankmanagementsystems erstellt MySQL ein Root-Konto, mit dem Sie volle Kontrolle über Ihre Datenbanken, Tabellen und Benutzer erhalten, um diese als Administrator zu verwalten. Falls Sie Hilfe bei der Installation benötigen, finden Sie alle wichtigen Informationen dazu in unserem MySQL-Tutorial.

Mit Ihrem Root-Konto können Sie weitere Benutzerkonten bzw. neue MySQL-User erstellen und diesen Berechtigungen zuweisen. Beachten Sie, dass auf Ubuntu-Systemen mit MySQL 5.7 und neueren Versionen der MySQL-Root-Benutzer standardmäßig so konfiguriert ist, dass er sich nicht mit einem Passwort, sondern mit dem Plugin auth_socket authentifiziert. Dabei muss der Name des Systembenutzers, der den MySQL-Client aufruft, mit dem Namen des MySQL-Benutzers, der im Kommando angegeben ist, übereinstimmen. Das bedeutet, dass Sie den Befehl sudo voranstellen müssen, um Zugriff auf Ihr Root-Konto zu erhalten:

$ sudo mysql
bash

Um einen neuen Benutzer in MySQL anzulegen, verwenden Sie den Befehl CREATE USER. Dieser ermöglicht es Ihnen, einen Benutzer mit einem bestimmten Benutzernamen und Passwort zu erstellen:

mysql> CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';
bash

Ersetzen Sie username durch einen Benutzernamen Ihrer Wahl. Danach geben Sie unter host den jeweiligen Namen des Hosts an, von dem aus sich der neue Benutzer verbinden wird. Wenn der Benutzer nur von Ihrem lokalen Ubuntu-Server aus Zugriff erhalten soll, können Sie localhost angeben.

Bei der Auswahl des Authentifizierungs-Plugins stehen Ihnen mehrere Möglichkeiten zur Verfügung: Das auth_socket-Plugin bietet eine hohe Sicherheit, da User ein Passwort eingeben müssen, um auf die Datenbank zuzugreifen. Allerdings verhindert es auch Remote-Verbindungen, und kann daher zu größerem Aufwand führen, wenn externe Programme mit MySQL interagieren müssen. Alternativ können Sie den Befehlsteil WITH authentication_plugin weglassen, damit sich der Benutzer über das MySQL-Standard-Plugin caching_sha2_password authentifiziert. Der Befehl lautet in diesem Fall:

mysql> CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
bash

Nachdem Sie einen neuen Benutzer erstellt haben, müssen Sie diesem Berechtigungen zuweisen.

Mehr als nur eine Domain!

Hier finden Sie Ihre perfekte Domain - z.B. .de Domain + persönlicher Berater

E-Mail-Postfach
24/7 Support
Wildcard SSL

Nutzerrechte zuweisen mit MySQL create user

Das Erstellen und die Verwaltung von Nutzerrechten ist entscheidend für die Datensicherheit in MySQL. Der allgemeine Befehl für die Zuweisung von Nutzerrechten lautet:

mysql> GRANT PRIVILEGE ON database.table TO 'username'@'host';
bash

Der Wert PRIVILEGE legt fest, welche Aktionen der Benutzer in der angegebenen Datenbank und Tabelle durchführen darf. Diesen Wert können Sie unter anderem mit folgenden Befehlen ersetzen:

  • CREATE: Ermöglicht es Benutzern, eine Datenbank oder Tabelle zu erstellen.
  • SELECT: Erlaubt Benutzern, Daten abzurufen.
  • INSERT: Ermöglicht es Benutzern, neue Einträge in Tabellen hinzuzufügen.
  • UPDATE: Ermöglicht es Benutzern, bestehende Einträge in Tabellen zu ändern.
  • DELETE: Ermöglicht es Benutzern, Tabelleneinträge zu löschen.
  • DROP: Benutzer können ganze Datenbanktabellen löschen.

Sie können dem neuen Benutzer auch mehrere Privilegien auf einmal erteilen. Dazu müssen diese durch ein Komma getrennt werden:

mysql> GRANT SELECT, INSERT, UPDATE ON database.table TO 'username'@'host';
bash

Berechtigungen für alle Datenbanken oder Tabellen erteilen Sie ebenfalls in einem einzigen Befehl, indem Sie * anstelle der Datenbank- und Tabellennamen eingeben. Folgender Befehl gibt beispielsweise einem Benutzer die Berechtigung, in allen Datenbanken und Tabellen, Daten mit SELECT abzufragen, neue Einträge mit INSERT hinzuzufügen und bestehende Beiträge mit UPDATE zu ändern.

mysql> GRANT SELECT, INSERT, UPDATE ON *.* TO 'username'@'host';
bash

Nachdem Sie in MySQL die CREATE USER- oder GRANT-Anwendung ausgeführt haben, können Sie mit dem Befehl FLUSH PRIVILEGES die Datenbank aktualisieren, um die Berechtigungstabellen neu zu laden. Damit stellen Sie sicher, dass die neuen Berechtigungen in Kraft gesetzt werden:

mysql> FLUSH PRIVILEGES;
bash

Sie sollten den Benutzern jedoch nur die Berechtigungen gewähren, die sie benötigen. Geben Sie einem Benutzer volle Kontrolle, ist dies auch ein hohes Sicherheitsrisiko.

MySQL-User erstellen: Nutzerrechte entziehen

Um Nutzerrechte in MySQL wieder zu entziehen, wird der REVOKE-Befehl verwendet. Die Syntax ist ähnlich dem des GRANT-Befehls. Jedoch müssen Sie in diesem Fall FROM anstatt TO verwenden:

mysql> REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host';
bash

Um sich die aktuellen Berechtigungen eines Benutzers anzeigen zu lassen, können Sie den Befehl SHOW GRANTS nutzen:

mysql> SHOW GRANTS FOR 'username'@'host';
bash

Um einen Benutzer zu löschen, wird der Befehl DROP genutzt:

mysql> DROP USER 'username'@'localhost';
bash

Allerdings sollten Sie äußerst vorsichtig sein, wenn Sie Benutzer löschen, insbesondere wenn es sich um Benutzer mit administrativen Privilegien handelt. Stellen Sie sicher, dass Sie den Benutzer entfernen, den Sie wirklich entfernen möchten, um versehentliche Datenverluste zu vermeiden.

Nachdem Sie einen neuen MySQL-User erstellt und ihm Rechte gewährt haben, können Sie den MySQL-Client beenden:

mysql> exit
bash