Um einen neuen Benutzer in MySQL anlegen zu können, benötigen Sie neben dem Zugriff auf die jeweilige Datenbank aus­rei­chen­de Ad­mi­nis­tra­tor­rech­te oder Superuser-Pri­vi­le­gi­en, die es Ihnen er­mög­li­chen, Be­nut­zer­kon­ten zu erstellen und Be­rech­ti­gun­gen zu verwalten. Sie müssen auch wissen, welche Art von Zugriff der neue Benutzer benötigt: Le­se­rech­te, Schreib­rech­te oder sogar ad­mi­nis­tra­ti­ve Rechte.

MySQL-User erstellen

Bei der In­stal­la­ti­on des Da­ten­bank­ma­nage­ment­sys­tems erstellt MySQL ein Root-Konto, mit dem Sie volle Kontrolle über Ihre Da­ten­ban­ken, Tabellen und Benutzer erhalten, um diese als Ad­mi­nis­tra­tor zu verwalten. Falls Sie Hilfe bei der In­stal­la­ti­on benötigen, finden Sie alle wichtigen In­for­ma­tio­nen dazu in unserem MySQL-Tutorial.

Mit Ihrem Root-Konto können Sie weitere Be­nut­zer­kon­ten bzw. neue MySQL-User erstellen und diesen Be­rech­ti­gun­gen zuweisen. Beachten Sie, dass auf Ubuntu-Systemen mit MySQL 5.7 und neueren Versionen der MySQL-Root-Benutzer stan­dard­mä­ßig so kon­fi­gu­riert ist, dass er sich nicht mit einem Passwort, sondern mit dem Plugin auth_socket au­then­ti­fi­ziert. Dabei muss der Name des Sys­tem­be­nut­zers, der den MySQL-Client aufruft, mit dem Namen des MySQL-Benutzers, der im Kommando angegeben ist, über­ein­stim­men. Das bedeutet, dass Sie den Befehl sudo vor­an­stel­len 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 er­mög­licht es Ihnen, einen Benutzer mit einem be­stimm­ten Be­nut­zer­na­men und Passwort zu erstellen:

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

Ersetzen Sie username durch einen Be­nut­zer­na­men Ihrer Wahl. Danach geben Sie unter host den je­wei­li­gen 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 Au­then­ti­fi­zie­rungs-Plugins stehen Ihnen mehrere Mög­lich­kei­ten zur Verfügung: Das auth_socket-Plugin bietet eine hohe Si­cher­heit, da User ein Passwort eingeben müssen, um auf die Datenbank zu­zu­grei­fen. Al­ler­dings ver­hin­dert es auch Remote-Ver­bin­dun­gen, und kann daher zu größerem Aufwand führen, wenn externe Programme mit MySQL in­ter­agie­ren müssen. Al­ter­na­tiv können Sie den Be­fehls­teil WITH authentication_plugin weglassen, damit sich der Benutzer über das MySQL-Standard-Plugin caching_sha2_password au­then­ti­fi­ziert. 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 Be­rech­ti­gun­gen zuweisen.

KI-Assistent kostenlos – Ihr smarter All­tags­hel­fer
  • DSGVO-konform & sicher gehostet in Deutsch­land
  • Pro­duk­ti­vi­tät steigern – weniger Aufwand, mehr Output
  • Direkt im Browser starten – ohne In­stal­la­ti­on

Nut­zer­rech­te zuweisen mit MySQL create user

Das Erstellen und die Ver­wal­tung von Nut­zer­rech­ten ist ent­schei­dend für die Da­ten­si­cher­heit in MySQL. Der all­ge­mei­ne Befehl für die Zuweisung von Nut­zer­rech­ten lautet:

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

Der Wert PRIVILEGE legt fest, welche Aktionen der Benutzer in der an­ge­ge­be­nen Datenbank und Tabelle durch­füh­ren darf. Diesen Wert können Sie unter anderem mit folgenden Befehlen ersetzen:

  • CREATE: Er­mög­licht es Benutzern, eine Datenbank oder Tabelle zu erstellen.
  • SELECT: Erlaubt Benutzern, Daten abzurufen.
  • INSERT: Er­mög­licht es Benutzern, neue Einträge in Tabellen hin­zu­zu­fü­gen.
  • UPDATE: Er­mög­licht es Benutzern, be­stehen­de Einträge in Tabellen zu ändern.
  • DELETE: Er­mög­licht es Benutzern, Ta­bel­len­ein­trä­ge zu löschen.
  • DROP: Benutzer können ganze Da­ten­bank­ta­bel­len löschen.

Sie können dem neuen Benutzer auch mehrere Pri­vi­le­gi­en auf einmal erteilen. Dazu müssen diese durch ein Komma getrennt werden:

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

Be­rech­ti­gun­gen für alle Da­ten­ban­ken oder Tabellen erteilen Sie ebenfalls in einem einzigen Befehl, indem Sie * anstelle der Datenbank- und Ta­bel­len­na­men eingeben. Folgender Befehl gibt bei­spiels­wei­se einem Benutzer die Be­rech­ti­gung, in allen Da­ten­ban­ken und Tabellen, Daten mit SELECT ab­zu­fra­gen, neue Einträge mit INSERT hin­zu­zu­fü­gen und be­stehen­de 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 aus­ge­führt haben, können Sie mit dem Befehl FLUSH PRIVILEGES die Datenbank ak­tua­li­sie­ren, um die Be­rech­ti­gungs­ta­bel­len neu zu laden. Damit stellen Sie sicher, dass die neuen Be­rech­ti­gun­gen in Kraft gesetzt werden:

mysql> FLUSH PRIVILEGES;
bash

Sie sollten den Benutzern jedoch nur die Be­rech­ti­gun­gen gewähren, die sie benötigen. Geben Sie einem Benutzer volle Kontrolle, ist dies auch ein hohes Si­cher­heits­ri­si­ko.

MySQL-User erstellen: Nut­zer­rech­te entziehen

Um Nut­zer­rech­te 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 Be­rech­ti­gun­gen 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

Al­ler­dings sollten Sie äußerst vor­sich­tig sein, wenn Sie Benutzer löschen, ins­be­son­de­re wenn es sich um Benutzer mit ad­mi­nis­tra­ti­ven Pri­vi­le­gi­en handelt. Stellen Sie sicher, dass Sie den Benutzer entfernen, den Sie wirklich entfernen möchten, um ver­se­hent­li­che Da­ten­ver­lus­te 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

addbd9f6fea8165d2a661d309dd71bc7

Zum Hauptmenü