One place for hosting & domains

      Installieren von MySQL unter Ubuntu 20.04


      Eine frühere Version dieses Tutorials wurde von Hazel Virdó verfasst.

      Einführung

      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 Tutorial wird beschrieben, wie Sie MySQL-Version 8 auf einem Ubuntu 20.04-Server installieren können. Nach Abschluss des Tutorials verfügen Sie über eine funktionierende relationale Datenbank, mit der Sie Ihre nächste Website oder Anwendung erstellen können.

      Voraussetzungen

      Um dieser Anleitung zu folgen, benötigen Sie:

      Schritt 1 – Installieren von MySQL

      Unter Ubuntu 20.04 können Sie MySQL mithilfe des APT-Paket-Repository installieren. Zum Zeitpunkt der Verfassung dieses Dokuments ist die im standardmäßigen Ubuntu-Repository verfügbare Version 8.0.19.

      Aktualisieren Sie zum Installieren den Paketindex auf Ihrem Server, wenn Sie es in letzter Zeit nicht getan haben:

      Installieren Sie anschließend das Paket mysql-server:

      • sudo apt install mysql-server

      Dadurch wird MySQL installiert; Sie werden jedoch nicht dazu aufgefordert, ein Passwort festzulegen oder andere Konfigurationsänderungen vorzunehmen. Da damit Ihre Installation von MySQL unsicher bleibt, kümmern wir uns als Nächstes um das Thema Sicherheit.

      Schritt 2 — Konfigurieren von MySQL

      Bei neuen Installationen von MySQL sollten Sie das im DBMS enthaltene Sicherheitsskript ausführen. Das Skript ändert gewisse weniger sichere Standardeinstellungen bei Aspekten wie Remote-Root-Login und Beispielbenutzern.

      Führen Sie das Sicherheitsskript mit sudo 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 des Validate Password-Plugins entscheiden, werden Sie von dem Skript gefragt, ob Sie eine Passwort-Validierungsstufe auswählen möchten. Die stärkste Stufe – die Sie durch Eingabe von 2 auswählen – erfordert, dass Ihr Passwort mindestens acht Zeichen lang ist und eine Mischung aus Groß- und Kleinbuchstaben, Zahlen und Sonderzeichen enthält:

      Output

      Securing 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

      Unabhängig davon, ob Sie sich für die Einrichtung des Validate Password-Plugins entscheiden, werden Sie als Nächstes dazu aufgefordert, ein Passwort für den root user für MySQL festzulegen. Geben Sie ein sicheres Passwort Ihrer Wahl ein und bestätigen Sie es dann:

      Output

      Please set the password for root here. New password: Re-enter new password:

      Wenn Sie das Validate Password-Plugin verwendet haben, erhalten Sie eine Rückmeldung über die Stärke Ihres neuen Passworts. Dann fragt das Skript, ob Sie mit dem von Ihnen gerade eingegebenen Passwort fortfahren oder ein neues Passwort eingeben möchten. Wenn Sie mit der Stärke des von Ihnen gerade eingegebenen Passworts zufrieden sind, geben Sie Y ein, um das Skript fortzusetzen:

      Output

      Estimated 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. Damit werden einige anonyme Benutzer und die Testdatenbank entfernt, Remote-Root-Logins deaktiviert und diese neuen Regeln geladen, damit MySQL die Änderungen, die Sie gerade vorgenommen haben, unverzüglich anwendet.

      Beachten Sie, dass Sie zwar ein Passwort für den MySQL-Benutzer root festgelegt haben, dieser Benutzer jedoch nicht so konfiguriert ist, dass er beim Verbinden mit der MySQL-Shell per Passwort authentifiziert wird. Wenn Sie möchten, können Sie diese Einstellung durch Ausführung von Schritt 3 anpassen.

      Schritt 3 — (Optional) Anpassen der Benutzerauthentifizierung und -berechtigungen

      In Ubuntu-Systemen, die MySQL 5.7 (oder höher) ausführen, ist der MySQL-Benutzer root so konfiguriert, dass er nicht per Passwort, sondern standardmäßig mit dem Plugin auth_socket authentifiziert wird. Dadurch entsteht in vielen Fällen mehr Sicherheit und Benutzerfreundlichkeit, kann aber auch Dinge komplizieren, wenn Sie einem externen Programm (z. B. phpMyAdmin) Zugriff auf den Benutzer erteilen müssen.

      Um als root ein Passwort für die Verbindung mit MySQL zu verwenden, müssen Sie die Authentifizierungsmethode vom 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:

      Prüfen Sie dann mit folgendem Befehl, welches Authentifizierungsverfahren Ihre MySQL -Benutzerkonten verwenden:

      • 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 | | auth_socket | localhost | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ 5 rows in set (0.00 sec)

      In diesem Beispiel können Sie sehen, dass der root-Benutzer über das auth_socket-Plugin authentifiziert wird. Um das root-Konto so zu konfigurieren, dass eine Authentifizierung mit Passwort erfolgt, führen Sie eine ALTER USER-Anweisung aus, um zu ändern, welches Authentifizierungs-Plugin verwendet wird, 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: Die vorherige ALTER USER-Anweisung konfiguriert den MySQL-Benutzer root so, dass er mit dem Plugin caching_sha2_password authentifiziert wird. Gemäß der offiziellen MySQL-Dokumentation ist caching_sha2_password das bevorzugte Authentifizierungs-Plugin von MySQL, da es eine sicherere Passwortverschlüsselung bietet als das ältere, aber immer noch verbreitete Plugin 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:

      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)

      In dieser Beispielausgabe können Sie sehen, dass der MySQL-Benutzer root jetzt mit caching_sha2_password authentifiziert wird. Nach der Bestätigung auf Ihrem eigenen Server können Sie die MySQL-Shell beenden:

      Manchmal ist es hilfreicher, sich über einen dedizierten Benutzer mit MySQL zu verbinden. Um einen solchen Benutzer zu erstellen, öffnen Sie erneut die MySQL-Shell:

      Anmerkung: Wenn Sie für root die Passwortauthentifizierung aktiviert haben, wie in den vorherigen Absätzen beschrieben, müssen Sie einen anderen Befehl für den Zugriff auf die MySQL-Shell verwenden. Der folgende Befehl sorgt dafür, dass Ihr MySQL-Client mit regulären Benutzerberechtigungen ausgeführt wird; Sie erhalten nur dann Administratorberechtigungen in der Datenbank, wenn Sie sich authentifizieren:

      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;

      Beachten Sie, dass Sie an dieser Stelle den Befehl FLUSH PRIVILEGES nicht erneut ausführen müssen. Der Befehl wird nur benötigt, wenn Sie die Berechtigungstabellen mit Anweisungen wie INSERT, UPDATE oder DELETE ändern. Da Sie einen neuen Benutzer erstellt haben, anstatt einen vorhandenen Benutzer zu verändern, ist FLUSH PRIVILEGES hier nicht erforderlich.

      Beenden Sie anschließend die MySQ-Shell:

      Lassen Sie uns die MySQL-Installation abschließend testen.

      Schritt 4 — Testen von MySQL

      Unabhängig davon, wie Sie es installiert haben, sollte MySQL automatisch gestartet worden sein. Um dies zu testen, überprüfen Sie seinen Status.

      • systemctl status mysql.service

      Sie werden eine Ausgabe sehen, die der folgenden ähnelt:

      Output

      ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2020-04-21 12:56:48 UTC; 6min ago Main PID: 10382 (mysqld) Status: "Server is operational" Tasks: 39 (limit: 1137) Memory: 370.0M CGroup: /system.slice/mysql.service └─10382 /usr/sbin/mysqld

      Wenn MySQL nicht ausgeführt wird, können Sie es mit sudo systemctl start mysql starten.

      Für einen zusätzlichen Test können Sie mit dem Tool mysqladmin eine Verbindung zur Datenbank herstellen. Das ist ein Client, der Sie administrative Befehle ausführen lässt. Dieser Befehl besagt zum Beispiel, dass eine Verbindung mit MySQL als root (-u root) hergestellt, nach einem Passwort gefragt (-p) und die Version zurückgegeben wird.

      • sudo mysqladmin -p -u root version

      Sie sollten eine ähnliche Ausgabe wie diese sehen:

      Output

      mysqladmin Ver 8.0.19-0ubuntu5 for Linux on x86_64 ((Ubuntu)) Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Server version 8.0.19-0ubuntu5 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 10 min 44 sec Threads: 2 Questions: 25 Slow queries: 0 Opens: 149 Flush tables: 3 Open tables: 69 Queries per second avg: 0.038

      Das bedeutet, dass MySQL jetzt ausgeführt wird.

      Zusammenfassung

      Sie haben nun eine grundlegende MySQL-Einrichtung auf Ihrem Server installiert. Hier sehen Sie einige Beispiele für nächste Schritte:



      Source link