MySQL-Nutzer:innen via CREATE USER einfach anlegen
Willst du einen neuen User in MySQL anlegen, benötigst du neben dem Zugriff auf die Datenbank auch Administratorrechte. Nur mit diesen Superuser-Privilegien kannst du Konten erstellen und Berechtigungen verwalten. Überlege dir vorab, welche Zugriffsart nötig ist: Reicht reines Lesen aus oder sind Schreibrechte bzw. administrative Befugnisse erforderlich?
MySQL-User erstellen
Direkt nach der Installation des Datenbankmanagementsystems generiert MySQL ein Root-Konto. Damit hast du die volle Kontrolle über Datenbanken, Tabellen und User. Suchst du Hilfe bei der Ersteinrichtung? In unserem MySQL-Tutorial findest du alle Details.
Nutze deinen Root-Zugang, um weitere MySQL-User anzulegen und Rechte zu verteilen. Ein wichtiger Hinweis für Ubuntu-Systeme (ab Version 5.7): Der MySQL-Root ist oft so eingestellt, dass die Anmeldung via auth_socket-Plugin erfolgt statt per Passwort. Hierbei müssen die Namen des Systembenutzers und des MySQL-Users identisch sein. Setze daher den Befehl sudo davor, um dich als Root einzuloggen:
$ sudo mysqlbashEinen neuen Account legst du mit CREATE USER an. So definierst du direkt Name und Passwort:
mysql> CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';bashErsetze username durch deinen Wunschnamen. Bei host gibst du den Host an, von dem die Verbindung kommt. Genügt der Zugriff über deinen lokalen Ubuntu-Server, nutzt du einfach localhost.
Beim Authentifizierungs-Plugin hast du die Wahl: Das Plugin auth_socket gilt als sehr sicher, da immer ein Passwort verlangt wird. Es blockiert jedoch Remote-Verbindungen, was bei externen Programmen zu Mehraufwand führen kann. Willst du das Standard-Plugin caching_sha2_password nutzen, lass den Teil WITH authentication_plugin weg. Der Befehl sieht dann so aus:
mysql> CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';bashSobald der User existiert, folgt die Zuweisung der Berechtigungen.
Nutzerrechte zuweisen mit MySQL create user
Die präzise Vergabe von Rechten ist die Basis für deine Datensicherheit. Der Standardbefehl dafür lautet:
mysql> GRANT PRIVILEGE ON database.table TO 'username'@'host';bashMit PRIVILEGE definierst du die erlaubten Aktionen. Typische Befehle sind:
CREATE: Erstellen von Datenbanken oder Tabellen.SELECT: Abrufen von Daten.INSERT: Hinzufügen neuer Datensätze.UPDATE: Ändern bestehender Einträge.DELETE: Löschen einzelner Zeilen.DROP: Entfernen kompletter Tabellen.
Du kannst auch mehrere Rechte kombinieren, indem du sie mit einem Komma trennst:
mysql> GRANT SELECT, INSERT, UPDATE ON database.table TO 'username'@'host';bashSollen Rechte für alle Datenbanken gelten, nutzt du das Platzhalter-Symbol *. Im folgenden Beispiel darf der User überall Daten abfragen (SELECT), neu anlegen (INSERT) und bearbeiten (UPDATE):
mysql> GRANT SELECT, INSERT, UPDATE ON *.* TO 'username'@'host';bashHast du CREATE USER oder GRANT genutzt, lade die Berechtigungstabellen mit FLUSH PRIVILEGES neu. So stellst du sicher, dass alle Änderungen sofort aktiv sind:
mysql> FLUSH PRIVILEGES;bashGehe nach dem Minimalprinzip vor: Gib nur so viele Rechte wie unbedingt nötig. Volle Kontrolle für jeden User bedeutet ein unnötiges Sicherheitsrisiko.
MySQL-User verwalten: Rechte entziehen und löschen
Um Privilegien zu widerrufen, nutzt du den REVOKE-Befehl. Er funktioniert fast wie die Zuweisung, nutzt aber FROM statt TO:
mysql> REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host';bashMöchtest du prüfen, welche Rechte ein Account aktuell besitzt? Nutze diesen Befehl:
mysql> SHOW GRANTS FOR 'username'@'host';bashSoll ein Account komplett verschwinden, hilft DROP:
mysql> DROP USER 'username'@'localhost';bash