Server

So installieren Sie MySQL auf Ubuntu 18.04

Einführung

MySQL ist ein Open-Source-Datenbankmanagementsystem, das üblicherweise als Teil des beliebten LAMP-Stacks (Linux, Apache, MySQL, PHP/Python/Perl) installiert wird. Es verwendet eine relationale Datenbank und SQL (Structured Query Language), um seine Daten zu verwalten.

Die Kurzversion der Installation ist einfach: Aktualisieren Sie Ihren Paketindex, installieren Sie das Paket mysql-server und führen Sie dann das enthaltene Sicherheitsskript aus.

sudo apt update
sudo apt install mysql-server
sudo mysql_secure_installation

This tutorial will explain how to install MySQL version 5.7 on an Ubuntu 18.04 server. However, if you’re looking to update an existing MySQL installation to version 5.7, you can read this MySQL 5.7 update guide instead.

Prerequisites

To follow this tutorial, you will need:

  • One Ubuntu 18.04 server set up by following this initial server setup guide, including a non-root user with sudo privileges and a firewall.

Step 1 — Installing MySQL

On Ubuntu 18.04, only the latest version of MySQL is included in the APT package repository by default. At the time of writing, that’s MySQL 5.7

To install it, update the package index on your server with apt:

sudo apt update

Installieren Sie dann das Standardpaket:

sudo apt install mysql-server

Dadurch wird MySQL installiert, aber Sie werden nicht aufgefordert, ein Passwort festzulegen oder andere Konfigurationsänderungen vorzunehmen. Da dies Ihre Installation von MySQL unsicher macht, werden wir dies als nächstes behandeln.

Schritt 2 – Konfigurieren von MySQL

Bei Neuinstallationen sollten Sie das mitgelieferte Sicherheitsskript ausführen. Dadurch werden einige der weniger sicheren Standardoptionen für Dinge wie Remote-Root-Anmeldungen und Beispielbenutzer geändert. Bei älteren Versionen von MySQL mussten Sie auch das Datenverzeichnis manuell initialisieren, aber das geschieht jetzt automatisch.

Führen Sie das Sicherheitsskript aus:

sudo mysql_secure_installation

Dies führt Sie durch eine Reihe von Eingabeaufforderungen, in denen Sie einige Änderungen an den Sicherheitsoptionen Ihrer MySQL-Installation vornehmen können. Die erste Aufforderung fragt Sie, ob Sie das Validate Password Plugin einrichten möchten, mit dem Sie die Stärke Ihres MySQL-Passworts testen können. Unabhängig von Ihrer Wahl werden Sie als nächstes aufgefordert, ein Passwort für den MySQL-Root-Benutzer festzulegen. Geben Sie ein sicheres Passwort Ihrer Wahl ein und bestätigen Sie es anschließend.

Von dort aus können Sie Y und dann ENTER drücken, um die Standardwerte für alle nachfolgenden Fragen zu akzeptieren. Dadurch werden einige anonyme Benutzer und die Testdatenbank entfernt, Remote-Root-Anmeldungen deaktiviert und die neuen Regeln geladen, so dass MySQL die von Ihnen vorgenommenen Änderungen sofort beachtet.

Um das MySQL-Datenverzeichnis zu initialisieren, würden Sie mysql_install_db für Versionen vor 5.7.6 und mysqld –initialize für 5.7.6 und später verwenden. Wenn Sie jedoch MySQL aus der Debian-Distribution installiert haben, wie in Schritt 1 beschrieben, wurde das Datenverzeichnis automatisch initialisiert; Sie müssen nichts tun. Wenn Sie versuchen, den Befehl trotzdem auszuführen, wird der folgende Fehler angezeigt:

Output

mysqld: Can't create directory '/var/lib/mysql/' (Errcode: 17 - File exists)
. . .
2018-04-23T13:48:00.572066Z 0 [ERROR] Aborting

Beachten Sie, dass Sie zwar ein Passwort für den Root-MySQL-Benutzer festgelegt haben, dieser Benutzer aber nicht so konfiguriert ist, dass er sich mit einem Passwort authentifiziert, wenn er sich mit der MySQL-Shell verbindet. Wenn Sie möchten, können Sie diese Einstellung anpassen, indem Sie Schritt 3 folgen.

Schritt 3 – (Optional) Anpassen der Benutzerauthentifizierung und Berechtigungen

In Ubuntu-Systemen, auf denen MySQL 5.7 (und spätere Versionen) läuft, ist der Root-MySQL-Benutzer so eingestellt, dass er sich standardmäßig mit dem auth_socket-Plugin und nicht mit einem Passwort authentifiziert. Dies ermöglicht in vielen Fällen eine größere Sicherheit und Benutzerfreundlichkeit, kann aber auch die Dinge verkomplizieren, wenn Sie einem externen Programm (z. B. phpMyAdmin) den Zugriff auf den Benutzer erlauben müssen.

Um ein Passwort zu verwenden, um sich als root mit MySQL zu verbinden, müssen Sie dessen Authentifizierungsmethode von auth_socket auf mysql_native_password umstellen. Öffnen Sie dazu die MySQL-Eingabeaufforderung in Ihrem Terminal:

sudo mysql

Prüfen Sie als Nächstes mit dem folgenden Befehl, welche Authentifizierungsmethode jedes Ihrer MySQL-Benutzerkonten verwendet:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

In diesem Beispiel können Sie sehen, dass sich der Root-Benutzer tatsächlich mit dem auth_socket-Plugin authentifiziert. Um das Root-Konto für die Authentifizierung mit einem Passwort zu konfigurieren, führen Sie den folgenden ALTER USER-Befehl aus. Achten Sie darauf, das Passwort in ein sicheres Passwort Ihrer Wahl zu ändern, und beachten Sie, dass dieser Befehl das Root-Passwort ändert, das Sie in Schritt 2 festgelegt haben:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Führen Sie dann FLUSH PRIVILEGES aus, wodurch der Server angewiesen wird, die Berechtigungstabellen neu zu laden und Ihre neuen Änderungen in Kraft zu setzen:

mysql> FLUSH PRIVILEGES;

Überprüfen Sie die Authentifizierungsmethoden, die von jedem Ihrer Benutzer verwendet werden, erneut, um zu bestätigen, dass root sich nicht mehr mit dem auth_socket-Plugin authentifiziert:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

In dieser Beispielausgabe sehen Sie, dass sich der Root-MySQL-Benutzer nun mit einem Passwort authentifiziert. Sobald Sie dies auf Ihrem eigenen Server bestätigen, können Sie die MySQL-Shell beenden:

mysql> exit

Alternativ dazu finden manche, dass es besser zu ihrem Arbeitsablauf passt, sich mit einem eigenen Benutzer mit MySQL zu verbinden. Um einen solchen Benutzer zu erstellen, öffnen Sie noch einmal die MySQL-Shell:

sudo mysql

Hinweis: Wenn Sie die Passwortauthentifizierung für root aktiviert haben, wie in den vorangegangenen Abschnitten beschrieben, müssen Sie einen anderen Befehl verwenden, um auf die MySQL-Shell zuzugreifen. Im Folgenden wird Ihr MySQL-Client mit normalen Benutzerrechten ausgeführt, und Sie erhalten nur durch die Authentifizierung Administratorrechte innerhalb der Datenbank:

mysql -u root -p

Legen Sie dort einen neuen Benutzer an und geben Sie ihm ein sicheres Passwort:

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

Erteilen Sie dann dem neuen Benutzer die entsprechenden Rechte. Mit diesem Befehl können Sie dem Benutzer z. B. Zugriffsrechte auf alle Tabellen in der Datenbank sowie die Berechtigung zum Hinzufügen, Ändern und Entfernen von Benutzerrechten erteilen:

mysql> GRANT ALL PRIVILEGES ON . TO 'sammy'@'localhost' WITH GRANT OPTION;

Beachten Sie, dass Sie zu diesem Zeitpunkt den Befehl FLUSH PRIVILEGES nicht erneut ausführen müssen. Dieser Befehl wird nur benötigt, wenn Sie die Berechtigungstabellen mit Anweisungen wie INSERT, UPDATE oder DELETE ändern. Da Sie einen neuen Benutzer angelegt haben, anstatt einen bestehenden zu ändern, ist FLUSH PRIVILEGES hier nicht erforderlich.

Verlassen Sie anschließend die MySQL-Shell:

mysql> exit

Zum Schluss testen wir die MySQL-Installation.

Schritt 4 – Testen von MySQL

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

systemctl status mysql.service

Sie erhalten eine Ausgabe ähnlich der folgenden:

Wenn MySQL nicht läuft, können Sie es mit sudo systemctl start mysql starten.

Für eine zusätzliche Überprüfung können Sie versuchen, sich mit dem Tool mysqladmin mit der Datenbank zu verbinden, das ein Client ist, mit dem Sie administrative Befehle ausführen können. Dieser Befehl sagt zum Beispiel, dass er sich mit MySQL als Root (-u root) verbindet, nach einem Passwort fragt (-p) und die Version zurückgibt.

sudo mysqladmin -p -u root version

Sie sollten eine ähnliche Ausgabe wie diese sehen:

mysqladmin  Ver 8.42 Distrib 5.7.21, for Linux on x86_64
Copyright (c) 2000, 2018, 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      5.7.21-1ubuntu1
Protocol version    10
Connection      Localhost via UNIX socket
UNIX socket     /var/run/mysqld/mysqld.sock
Uptime:         30 min 54 sec

Threads: 1  Questions: 12  Slow queries: 0  Opens: 115  Flush tables: 1  Open tables: 34  Queries per second avg: 0.006

Das bedeutet, dass MySQL in Betrieb ist und läuft.

Tags: mysqlubuntu