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
bashUm 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';
bashErsetzen 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';
bashNachdem Sie einen neuen Benutzer erstellt haben, müssen Sie diesem Berechtigungen zuweisen.
- Inklusive Wildcard-SSL-Zertifikat
- Inklusive Domain Lock
- Inklusive 2 GB E-Mail-Postfach
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';
bashDer 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';
bashBerechtigungen 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';
bashNachdem 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;
bashSie 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';
bashUm sich die aktuellen Berechtigungen eines Benutzers anzeigen zu lassen, können Sie den Befehl SHOW GRANTS
nutzen:
mysql> SHOW GRANTS FOR 'username'@'host';
bashUm einen Benutzer zu löschen, wird der Befehl DROP
genutzt:
mysql> DROP USER 'username'@'localhost';
bashAllerdings 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