• Product Updates

Wie erstellt man einen Benutzer in MySQL? (Schritt-für-Schritt-Anleitung zur Benutzererstellung in MySQL)

Wie erstellt man einen Benutzer in MySQL? (Schritt-für-Schritt-Anleitung zur Benutzererstellung in MySQL)

Table of contents

MySQL ist ein weit verbreitetes relationales Open-Source-Datenbankmanagementsystem (RDBMS). Es ist häufig eine Schlüsselkomponente des LAMP-Stacks, der Linux, Apache, MySQL und PHP umfasst. MySQL ist aufgrund seiner Beliebtheit und seiner breiten Akzeptanz weltweit eine der am häufigsten genutzten Open-Source-Datenbanken.

In dieser Anleitung erfahren Sie, wie Sie in MySQL Benutzer anlegen und ihnen die erforderlichen Berechtigungen für die Ausführung verschiedener Aufgaben zuweisen.

Voraussetzungen

Sie benötigen Zugriff auf eine MySQL-Datenbank, um dieser Anleitung folgen zu können. Diese Anleitung basiert auf einer MySQL-Datenbank, die auf einem virtuellen privaten Server mit Ubuntu 22.04 installiert ist, doch die Anweisungen gelten im Allgemeinen auch für andere Umgebungen.

Die Schritte zum Erstellen eines neuen MySQL-Benutzers und zum Zuweisen von Berechtigungen sind über verschiedene Betriebssysteme und Serverkonfigurationen hinweg ähnlich.

So erstellen Sie einen Benutzer in MySQL (alle Berechtigungen in MySQL erteilen)

Bei der Installation von MySQL wird ein Standard-Root-Benutzerkonto mit vollständigem Zugriff auf den MySQL-Server eingerichtet. Dieses Konto verfügt über vollständige Kontrolle über alle Datenbanken, Tabellen und Benutzer. Es empfiehlt sich jedoch, das Root-Konto für administrative Aufgaben zu reservieren und für andere Zwecke separate Benutzerkonten anzulegen.

In diesem Abschnitt wird erläutert, wie Sie einen neuen MySQL-Benutzer erstellen und ihm mithilfe des Root-Kontos bestimmte Berechtigungen zuweisen.

Auf Ubuntu-Systemen mit MySQL 5.7 und neuer authentifiziert sich der MySQL-Root-Benutzer in der Regel über das auth_socket-Plugin anstelle eines Passworts. Das bedeutet, dass der MySQL-Root-Benutzer mit dem Betriebssystembenutzer übereinstimmt, der den Befehl ausführt.

Sie können die installierte MySQL-Version ganz einfach mit diesem Befehl überprüfen:

Um auf das MySQL-Root-Konto zuzugreifen, müssen Sie sudo mit dem MySQL-Client-Befehl verwenden und diesem die erforderlichen Berechtigungen erteilen, um sich als MySQL-Root-Benutzer anzumelden.

Wenn der MySQL-Root-Benutzer so konfiguriert ist, dass er sich mit einem Passwort authentifiziert, benötigen Sie einen anderen Befehl, um auf die MySQL-Shell zuzugreifen. Verwenden Sie den folgenden Befehl, um sich als regulärer Benutzer anzumelden, und geben Sie das Passwort des Root-Benutzers ein, um Administratorrechte innerhalb der Datenbank zu erhalten:

# mysql -u root -p


Neuen Benutzer in MySQL erstellen

Nachdem Sie die MySQL-Eingabeaufforderung aufgerufen haben, können Sie mit der Anweisung CREATE USER einen neuen Benutzer erstellen. Die allgemeine Syntax für diesen Befehl lautet wie folgt:

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


Um einen neuen Benutzer in MySQL anzulegen, geben Sie zunächst den Benutzernamen nach dem Befehl CREATE USER an. Fügen Sie dem Benutzernamen ein @-Symbol und den Hostnamen hinzu, von dem aus sich der Benutzer verbinden wird. Wenn der Benutzer nur lokal vom Ubuntu-Server aus auf die Datenbank zugreift, können Sie „localhost“ verwenden. Die Einfassung von Benutzername und Hostname in einfache Anführungszeichen ist zwar optional, wird jedoch empfohlen, um mögliche Fehler zu vermeiden.

Sie können für Ihren Benutzer aus verschiedenen Authentifizierungs-Plugins wählen. Das zuvor erwähnte Plugin „auth_socket“ bietet hohe Sicherheit und macht die Eingabe eines Passworts durch den Benutzer überflüssig. Es schränkt jedoch Remote-Verbindungen ein, was für externe Programme, die Datenbankzugriff benötigen, ein Problem darstellen kann.

Alternativ können Sie den Teil „WITH authentication_plugin“ der Syntax weglassen, um standardmäßig das MySQL-Plugin „caching_sha2_password“ zu verwenden. Dieses Plugin wird aufgrund seiner robusten Sicherheitsfunktionen für die passwortbasierte Authentifizierung empfohlen.

Verwenden Sie den folgenden Befehl, um in MySQL einen Benutzer anzulegen, der sich mit caching_sha2_password authentifiziert. Ersetzen Sie „sammy“ durch Ihren gewünschten Benutzernamen und „password“ durch ein starkes, sicheres Passwort:

> CREATE USER ‚test‘@'localhost' IDENTIFIED BY ‚password‘;


Bei einigen PHP-Versionen ist ein bekanntes Problem mit dem caching_sha2_password-Plugin bekannt, das zu Kompatibilitätsproblemen führen kann. Wenn Sie planen, die Datenbank mit einer PHP-Anwendung wie phpMyAdmin zu verwenden, sollten Sie stattdessen einen Benutzer anlegen, der das ältere, aber immer noch sichere mysql_native_password-Plugin verwendet. Sie können einen Benutzer in MySQL mit dem folgenden Befehl anlegen:

> CREATE USER ‚techUser‘@'localhost' IDENTIFIED WITH mysql_native_password BY ‚password‘;


Wenn Sie sich unsicher sind, können Sie den Benutzer zunächst mit dem Plugin „caching_sha2_password“ anlegen und bei Bedarf später zu „mysql_native_password“ wechseln. Um diese Änderung vorzunehmen, verwenden Sie den folgenden Befehl:

> ALTER USER ‚techUser‘@'localhost' IDENTIFIED WITH mysql_native_password BY ‚password‘;


Sobald der neue Benutzer angelegt ist, können Sie ihm die erforderlichen Berechtigungen zuweisen.

Datenbank in MySQL erstellen

Sie müssen die Datenbank erstellen und dem Benutzer die erforderlichen Berechtigungen zuweisen. Um eine Datenbank in MySQL zu erstellen, führen Sie den folgenden Befehl aus:

> CREATE DATABASE testdatabase;


Dadurch wird eine leere Datenbank mit dem Namen „testdatabase“ erstellt, die Sie für Ihre Anwendung verwenden können.

Berechtigungen für den Benutzer erteilen: Nach dem Erstellen der Datenbank müssen Sie dem Benutzer „testUser“ vollen Zugriff darauf gewähren. Dies geschieht durch Ausführen von:

> GRANT ALL PRIVILEGES ON testdatabase.* TO ‚techUser‘@'localhost';


Dieser Befehl gewährt techUser die vollständige Kontrolle über die Testdatenbank und ermöglicht es ihm, alle Aktionen (wie SELECT, INSERT, UPDATE, DELETE usw.) auf allen Tabellen innerhalb dieser Datenbank auszuführen. Der Teil „localhost“ bedeutet, dass der Benutzer nur vom lokalen Server aus auf die Datenbank zugreifen kann.

Dadurch wird sichergestellt, dass der Benutzer über die erforderlichen Berechtigungen zur Verwaltung der spezifischen Datenbank verfügt, während sein Zugriff gleichzeitig auf die Datenbank „mytestapp“ und vom lokalen Server aus beschränkt wird.

Alle Berechtigungen für einen Benutzer in MySQL gewähren (Grant All Privileges MySQL)

Um einem Benutzer spezifische Berechtigungen in MySQL zu gewähren, lautet die allgemeine Syntax:

> GRANT PRIVILEGE ON database.table TO ‚username‘@'host';


Hier gibt PRIVILEGE die Aktionen an, die der Benutzer an einer bestimmten Datenbank und Tabelle ausführen darf. Sie können mehrere Berechtigungen in einem Befehl zuweisen, getrennt durch Kommas. Um globale Berechtigungen (für alle Datenbanken und Tabellen) zu erteilen, verwenden Sie Sternchen (*), um „alle“ darzustellen.

Der folgende Befehl gewährt einem Benutzer beispielsweise die Möglichkeit, Datenbanken und Tabellen zu erstellen, zu ändern und zu löschen sowie Daten einzufügen, zu aktualisieren und zu löschen und Abfragen mit SELECT durchzuführen. Er erlaubt zudem die Erstellung von Fremdschlüsseln und die Durchführung von FLUSH-Operationen mit der Berechtigung RELOAD:

> GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO ‚techUser‘@'localhost' WITH GRANT OPTION;


Die Option WITH GRANT OPTION ermöglicht es dem Benutzer, seine Berechtigungen an andere weiterzugeben. Achten Sie aus Sicherheitsgründen darauf, Ihren Benutzern nur die erforderlichen Berechtigungen zuzuweisen.

Eine vollständige Liste der verfügbaren Berechtigungen finden Sie in der offiziellen MySQL-Dokumentation.

Nach dem Anlegen eines Benutzers oder dem Erteilen von Berechtigungen empfehlen einige Anleitungen, den Befehl FLUSH PRIVILEGES auszuführen, um die Berechtigungstabellen neu zu laden und die neuen Berechtigungen zu übernehmen:

FLUSH PRIVILEGES;

Laut der offiziellen MySQL-Dokumentation werden die Berechtigungstabellen jedoch automatisch in den Speicher geladen, wenn Sie Anweisungen zur Kontoverwaltung wie GRANT verwenden, sodass FLUSH PRIVILEGES nicht unbedingt erforderlich ist. Die Ausführung dieses Befehls schadet dem System jedoch nicht.

Wichtiger Hinweis: Wenn Sie einem MySQL-Benutzer die Berechtigung ALL PRIVILEGES erteilen, erhalten Sie umfassenden Superuser-Zugriff, ähnlich wie der Root-Benutzer. Dieser Befehl würde wie folgt aussehen:

> GRANT ALL PRIVILEGES ON *.* TO ‚techUser‘@'localhost' WITH GRANT OPTION;


Diese Zugriffsebene sollte jedoch mit Vorsicht verwendet werden, da sie dem Benutzer die volle Kontrolle über alle Datenbanken auf dem Server gewährt. Jeder, der Zugriff auf dieses Benutzerkonto hat, kann jede Datenbank ändern oder löschen.

Wenn Sie Berechtigungen widerrufen müssen, ist die Syntax ähnlich wie beim Erteilen, jedoch verwenden Sie „FROM“ anstelle von „TO“:

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


Um die aktuellen Berechtigungen eines Benutzers anzuzeigen, können Sie folgenden Befehl ausführen:

> SHOW GRANTS FOR ‚Benutzername‘@'Host';


Benutzer in MySQL löschen

Wenn Sie einen Benutzer löschen möchten, verwenden Sie den Befehl DROP USER:

> DROP USER 'username'@'localhost';


Sobald Sie die Konfiguration des Benutzers und der Berechtigungen abgeschlossen haben, können Sie den MySQL-Client beenden:

> exit


Um sich in Zukunft als Ihr neuer MySQL-Benutzer anzumelden, verwenden Sie den folgenden Befehl:

# mysql -u techUser -p


Das Flag -p fordert Sie zur Eingabe des Benutzerpassworts auf.

Fazit

In dieser Anleitung haben Sie gelernt, wie Sie einen Benutzer in MySQL erstellen und diesem alle Berechtigungen in MySQL erteilen. Sie können nun verschiedene Berechtigungseinstellungen für Ihre Benutzer weiter erkunden und damit experimentieren oder sich eingehender mit fortgeschrittenen MySQL-Konfigurationen befassen.

Für weitere Details zu den Grundlagen von MySQL können Sie gerne weitere Ressourcen und die SQL-Dokumentation konsultieren.

BlueServers.com – Dedizierte Server weltweit!

BlueServers ist ein dynamischer und engagierter Hosting-Anbieter, der sich der Bereitstellung außergewöhnlicher Online-Lösungen verschrieben hat.

Wenn Sie auf der Suche nach erstklassigen Hosting-Diensten sind, die von einem engagierten Expertenteam unterstützt werden, hat Ihre Suche hier ein Ende. Wir sind hier, um sicherzustellen, dass Sie das bestmögliche Kundenerlebnis erhalten. Starten Sie noch heute mit uns und verbessern Sie Ihre Online-Präsenz!

Share

About the authors


scale 1
Ready to scale?

Start for free and unlock high-performance infrastructure with instant setup.

Get started arrow button

Help us improve — share your feedback

Your opinion helps us build a better service.