Einführung
MySQL ist ein Open-Source-Datenbankmanagementsystem. Es wird häufig als Bestandteil des LAMP-Stacks (Linux, Apache, MySQL und PHP) verwendet und ist zum jetzigen Zeitpunkt die weltweit beliebteste Open-Source-Datenbank. Diese Anleitung erklärt, wie Sie einen neuen MySQL-Benutzer anlegen und ihm die notwendigen Berechtigungen für verschiedene Aktionen erteilen.
Voraussetzungen
Um dieser Anleitung zu folgen, benötigen Sie Zugriff auf eine MySQL-Datenbank. Diese Anleitung geht davon aus, dass die Datenbank auf einem virtuellen privaten Server (VPS) unter Ubuntu 20.04 installiert ist. Die hier beschriebenen Prinzipien gelten jedoch unabhängig davon, wie Sie auf Ihre Datenbank zugreifen. Falls Sie keinen Zugriff auf eine MySQL-Datenbank haben und diese selbst einrichten möchten, können Sie einer unserer Installationsanleitungen folgen. Unabhängig vom Betriebssystem Ihres Servers sind die Vorgehensweisen zum Anlegen eines neuen MySQL-Benutzers und zum Vergeben von Berechtigungen in der Regel identisch.
Neuen Benutzer erstellen
Nach der Installation erstellt MySQL ein Root-Benutzerkonto, mit dem Sie Ihre Datenbank verwalten können. Dieser Benutzer verfügt über alle Berechtigungen auf dem MySQL-Server und hat somit die vollständige Kontrolle über alle Datenbanken, Tabellen, Benutzer usw. Daher sollten Sie dieses Konto nur für administrative Aufgaben verwenden. In diesem Schritt wird erklärt, wie Sie mit dem MySQL-Root-Benutzer ein neues Benutzerkonto erstellen und ihm Berechtigungen zuweisen.
Auf Ubuntu-Systemen mit MySQL 5.7 (und höher) wird der MySQL-Root-Benutzer standardmäßig über das Plugin `auth_socket` anstatt über ein Passwort authentifiziert. Dieses Plugin erfordert, dass der Benutzername des Betriebssystems, der den MySQL-Client aufruft, mit dem im Befehl angegebenen MySQL-Benutzernamen übereinstimmt. Das bedeutet, dass Sie dem Befehl `mysql` `sudo` voranstellen müssen, um ihn mit den Rechten des Ubuntu-Root-Benutzers auszuführen und so Zugriff auf den MySQL-Root-Benutzer zu erhalten.
sudo mysqlWenn Ihr MySQL-Root-Benutzer für die Passwortauthentifizierung konfiguriert ist, benötigen Sie einen anderen Befehl, um auf die MySQL-Shell zuzugreifen. Der folgende Befehl startet Ihren MySQL-Client mit normalen Benutzerrechten, und Sie erhalten Administratorrechte für die Datenbank, indem Sie sich einfach mit dem richtigen Passwort authentifizieren:
mysql -u root -pSobald Sie Zugriff auf die MySQL-Eingabeaufforderung haben, können Sie mit dem folgenden Befehl einen neuen Benutzer erstellen: BENUTZER ERSTELLEN Erstellen. Diese folgen dieser allgemeinen Syntax:
CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';Nach BENUTZER ERSTELLEN Sie geben einen Benutzernamen an. Unmittelbar darauf folgt ein @-Zeichen und dann der Hostname, von dem aus sich dieser Benutzer verbindet. Wenn Sie nur lokal von Ihrem Ubuntu-Server auf diesen Benutzer zugreifen möchten, können Sie „localhost“ angeben. Es ist nicht immer notwendig, Benutzernamen und Hostnamen in Anführungszeichen zu setzen, aber es kann Fehler vermeiden.
Bei der Auswahl eines Benutzerauthentifizierungs-Plugins stehen Ihnen mehrere Optionen zur Verfügung. auth_socket Wie bereits erwähnt, ist dies praktisch, da es hohe Sicherheit bietet, ohne dass authentifizierte Benutzer ein Passwort für den Datenbankzugriff eingeben müssen. Es verhindert jedoch auch Remote-Verbindungen, was die Interaktion externer Anwendungen mit MySQL erschweren kann.
Alternativ können Sie den Teil `WITH authentication_plugin` in der Syntax komplett weglassen, damit sich der Benutzer mit dem Standard-MySQL-Plugin `caching_sha2_password` authentifiziert. Die MySQL-Dokumentation empfiehlt dieses Plugin aufgrund seiner hohen Sicherheitsstandards für Benutzer, die sich mit einem Passwort anmelden möchten.
Um einen Benutzer zu erstellen, der sich mit caching_sha2_password authentifiziert, führen Sie folgenden Befehl aus. Stellen Sie sicher, dass Sammy Wählen Sie ein sicheres Passwort für Ihren gewünschten Benutzernamen und Ihr Passwort:
CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
In einigen PHP-Versionen besteht ein bekanntes Problem, das dazu führt, dass caching_sha2_password fehlschlägt. Wenn Sie diese Datenbank mit einer PHP-Anwendung – beispielsweise phpMyAdmin – verwenden möchten, sollten Sie einen Benutzer anlegen, der sich mit der älteren, aber immer noch sicheren mysql_native_password-Erweiterung authentifiziert.
CREATE USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';Wenn Sie sich nicht sicher sind, können Sie jederzeit einen Benutzer erstellen, der sich mit caching_sha2_plugin authentifiziert, und ihn dann mit diesem Befehl ändern:
ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';Nachdem Sie Ihren neuen Benutzer erstellt haben, können Sie ihm die entsprechenden Berechtigungen zuweisen.
Erteilen von Benutzerberechtigungen
Der allgemeine Befehl zum Erteilen von Benutzerrechten lautet wie folgt:
GRANT PRIVILEGE ON database.table TO 'username'@'host';Der PRIVILEGE-Wert in dieser Beispielsyntax legt fest, welche Aktionen der Benutzer in der angegebenen Datenbank und Tabelle ausführen darf. Sie können einem Benutzer mehrere Berechtigungen in einer einzigen Anweisung erteilen, indem Sie diese durch Kommas trennen. Globale Berechtigungen können Sie einem Benutzer auch erteilen, indem Sie anstelle des Datenbank- und Tabellennamens ein Sternchen (*) eingeben. In SQL sind Sternchen Sonderzeichen, die für “alle” Datenbanken oder Tabellen stehen.
Zur Veranschaulichung: Der folgende Befehl gewährt dem Benutzer globale Berechtigungen zum Erstellen, Ändern und Löschen von Datenbanken, Tabellen und Benutzern sowie die Berechtigung zum Einfügen, Aktualisieren und Löschen von Daten in beliebigen Tabellen auf dem Server. Er ermöglicht dem Benutzer außerdem, die Daten abzufragen. WÄHLEN Suche, Fremdschlüssel mit Stichwort LITERATURVERZEICHNIS Erstellen und betreiben SPÜLEN mit Punkten NEU LADEN Sie sollten Benutzern jedoch nur die Berechtigungen erteilen, die sie benötigen, damit Sie Ihre Benutzerrechte bei Bedarf anpassen können.
Die vollständige Liste der verfügbaren Punkte finden Sie unter Offizielle MySQL-Dokumentation Finde es.
Führen Sie diese GRANT-Anweisung aus und ersetzen Sie „Sammy“ durch Ihren MySQL-Benutzernamen, um Ihrem Benutzer diese Berechtigungen zu erteilen:
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'localhost' WITH GRANT OPTION;Beachten Sie, dass diese Anweisung auch die Option WITH GRANT enthält. Dadurch kann Ihr MySQL-Benutzer anderen Benutzern im System alle seine Berechtigungen erteilen.
Manche Benutzer möchten ihrem MySQL-Benutzer möglicherweise ALLE PRIVILEGIEN gewähren, wodurch sie weitreichende Superuser-Berechtigungen erhalten, die den Root-Benutzerberechtigungen ähneln, wie zum Beispiel:
GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
Derart weitreichende Berechtigungen sollten nicht leichtfertig erteilt werden, da jeder, der Zugriff auf diesen MySQL-Benutzer hat, die vollständige Kontrolle über jede Datenbank auf dem Server erlangt.
Viele Anleitungen empfehlen, den Befehl FLUSH PRIVILEGES unmittelbar nach einer CREATE USER- oder GRANT-Anweisung auszuführen, um die Berechtigungstabellen neu zu laden und sicherzustellen, dass die neuen Berechtigungen angewendet werden:
FLUSH PRIVILEGES;Laut jedoch Offizielle MySQL-DokumentationWenn Sie die Berechtigungstabellen indirekt mit einer Kontoverwaltungsanweisung wie GRANT ändern, lädt die Datenbank die Tabellen sofort in den Speicher. Daher ist der Befehl FLUSH PRIVILEGES in unserem Fall nicht erforderlich. Andererseits hat seine Ausführung keine negativen Auswirkungen auf das System.
Wenn Sie eine Lizenz widerrufen müssen, ist der Vorgang fast derselbe wie bei der Erteilung:
REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host';Beachten Sie, dass beim Widerrufen von Berechtigungen die Syntax Folgendes erfordert: ZUdie Sie beim Erteilen von Berechtigungen verwendet haben, AUSVerwenden.
Durch Ausführen des Befehls Ausstellungszuschüsse Sie können die aktuellen Berechtigungen des Benutzers überprüfen:
SHOW GRANTS FOR 'username'@'host';Da Sie Datenbanken mit FALLEN Löschen können Sie von FALLEN Um einen Benutzer zu löschen, verwenden Sie:
DROP USER 'username'@'localhost';Nachdem Sie den MySQL-Benutzer erstellt und ihm Berechtigungen erteilt haben, können Sie MySQL beenden:
exit
Um sich zukünftig als neuer MySQL-Benutzer anzumelden, verwenden Sie einen Befehl wie den folgenden:
mysql -u sammy -p-p bewirkt, dass der MySQL-Client Sie zur Eingabe des MySQL-Benutzerpassworts zur Authentifizierung auffordert.
Ergebnis
In diesem Tutorial haben Sie gelernt, wie Sie neue Benutzer hinzufügen und ihnen verschiedene Berechtigungen in einer MySQL-Datenbank zuweisen. Sie können nun weiter experimentieren und verschiedene Berechtigungseinstellungen für Ihre MySQL-Benutzer ausprobieren oder sich mit fortgeschritteneren MySQL-Einstellungen vertraut machen.









