# Benutzer in MySQL mit CREATE USER erstellen

Um einen neuen Benutzer in [MySQL](https://www.ionos.de/digitalguide/server/knowhow/was-ist-mysql/) anlegen zu können, benötigen Sie neben dem Zugriff auf die jeweilige [Datenbank](https://www.ionos.de/digitalguide/hosting/hosting-technik/datenbanken/) 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](https://www.ionos.de/digitalguide/hosting/hosting-technik/datenbankmanagementsystem-dbms-erklaert/) 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](https://www.ionos.de/digitalguide/server/knowhow/mysql-lernen-leicht-gemacht/).

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:

```bash
$ sudo mysql
```

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:

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

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](https://www.ionos.de/digitalguide/server/konfiguration/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:

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

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

## 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:

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

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:

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

**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.

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

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:

```bash
mysql> FLUSH PRIVILEGES;
```

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:

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

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

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

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

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

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:

```bash
mysql> exit
```


This is a markdown version of: [https://www.ionos.de/digitalguide/websites/web-entwicklung/mysql-create-user/](https://www.ionos.de/digitalguide/websites/web-entwicklung/mysql-create-user/) for AI/LLM consumption.