Manager, Developer Education
MySQL ist ein Open-Source-basiertes Datenbank-Managementsystem, das üblicherweise als Teil des beliebten LAMP-Stacks (Linux, Apache, MySQL, PHP/Python/Perl) installiert wird. Es implementiert das relationale Modell und verwendet zur Verwaltung der Daten Structured Query Language (besser bekannt als SQL).
In diesem Schnellstart-Tutorial wird beschrieben, wie Sie MySQL-Version 8 auf einem Ubuntu 20.04-Server installieren.
Um dieser Anleitung zu folgen, benötigen Sie:
Um MySQL zu installieren, aktualisieren Sie zuerst den Paketindex Ihres Servers, wenn Sie dies in letzter Zeit nicht getan haben:
- sudo apt update
Installieren Sie anschließend das Paket mysql-server
:
- sudo apt install mysql-server
Führen Sie mit sudo
das in MySQL enthaltene Sicherheitsskript aus:
- sudo mysql_secure_installation
Dieses Skript führt Sie durch eine Reihe von Aufforderungen, in denen Sie verschiedene Änderungen an den Sicherheitseinstellungen Ihrer MySQL-Einrichtung vornehmen können. In der ersten Eingabeaufforderung werden Sie gefragt, ob Sie das Plugin Validate Password einrichten möchten, mit dem Sie die Stärke Ihres MySQL-Passworts testen können.
Wenn Sie sich für die Einrichtung das Plugin Validate Password entscheiden, werden Sie von dem Skript gefragt, ob Sie eine Password-Validierungsstufe auswählen möchten, wobei 0
die schwächste und 2
die stärkste ist:
OutputSecuring the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: Y
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
2
In der nächsten Eingabeaufforderung geben Sie ein Passwort für den MySQL-root user ein und bestätigen es:
OutputPlease set the password for root here.
New password:
Re-enter new password:
Dann fragt das Skript, ob Sie mit dem von Ihnen gerade eingegebenen Passwort fortfahren oder ein neues Passwort eingeben möchten. Wenn Sie mit Ihrem Passwort zufrieden sind, geben Sie Y
ein, um mit dem Skript fortzufahren:
OutputEstimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
Von dort aus können Sie Y
und dann ENTER
drücken, um die Standardeinstellungen für alle nachfolgenden Fragen zu akzeptieren.
Um als root ein Passwort für die Verbindung mit MySQL zu verwenden, müssen Sie die Authentifizierungsmethode vom standardmäßigen Plugin auth_socket
in ein anderes Plugin ändern, wie zum Beispiel caching_sha2_password
oder mysql_native_password
. Öffnen Sie dazu die MySQL -Eingabeaufforderung auf Ihrem Terminal:
- sudo mysql
Führen Sie von dort eine ALTER USER
-Anweisung aus, um das verwendete Authentifizierungs-Plugin zu ändern, und legen Sie ein neues Passwort fest. Vergessen Sie nicht, password
in ein starkes Passwort Ihrer Wahl zu ändern, und beachten Sie, dass dieser Befehl das root-Passwort, das Sie in Schritt 2 festgelegt haben, ändern wird:
- ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
Anmerkung: caching_sha2_password
ist das bevorzugte Authentifizierungs-Plugin von MySQL, da es eine sicherere Passwortverschlüsselung bietet als das ältere, aber immer noch verbreitete mysql_native_password
.
Allerdings funktionieren viele PHP-Anwendungen (beispielsweise phpMyAdmin) mit caching_sha2_password
nicht zuverlässig. Wenn Sie diese Datenbank mit einer PHP-Anwendung verwenden möchten, wollen Sie root ggf. so festlegen, dass stattdessen mit mysql_native_password
authentifiziert wird:
- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Führen Sie dann FLUSH PRIVILEGES
aus, was den Server anweist, die Berechtigungstabellen neu zu laden und die Änderungen zu übernehmen:
- FLUSH PRIVILEGES;
Prüfen Sie die von Ihren Benutzern verwendeten Authentifizierungsmethoden erneut, um zu bestätigen, dass root
nicht mehr über das auth_socket-Plugin authentifiziert wird:
- SELECT user,authentication_string,plugin,host FROM mysql.user;
Output+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$lS|M#3K #XslZ.xXUq.crEqTjMvhgOIX7B/zki5DeLA3JB9nh0KwENtwQ4 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | *3636DACC8616D997782ADD0839F92C1571D6D78F | caching_sha2_password | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)
Nach der Bestätigung auf Ihrem eigenen Server können Sie die MySQL-Shell beenden:
- exit
Alternativ können Sie mit einem dedizierten Benutzer anstelle von root eine Verbindung zu MySQL herstellen. Um einen solchen Benutzer zu erstellen, öffnen Sie erneut die MySQL-Shell:
- sudo mysql
Anmerkung: Wenn Sie für root die Passwortauthentifizierung aktiviert haben (wie in den vorherigen Absätzen beschrieben), müssen Sie stattdessen Folgendes ausführen:
- mysql -u root -p
Erstellen Sie von dort einen neuen Benutzer und geben Sie ihm ein starkes Passwort:
- CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
Erteilen Sie dann Ihrem neuen Benutzer die entsprechenden Berechtigungen. Mit diesem Befehl können Sie dem Benutzer zum Beispiel Berechtigungen für alle Tabellen in der Datenbank sowie Berechtigungen zum Hinzufügen, Ändern und Entfernen von Benutzerberechtigungen erteilen:
- GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
Danach können Sie die MySQL-Shell verlassen:
- exit
Sie haben nun eine grundlegende MySQL-Einrichtung auf Ihrem Server installiert. Hier sehen Sie einige Beispiele für nächste Schritte:
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!