Eine frühere Version dieses Tutorials wurde vonBrennan Bearnes geschrieben.
Einführung
Während viele Benutzer die Funktionalität eines Datenbankverwaltungssystems wie MySQL benötigen, fühlen sie sich möglicherweise nicht wohl, wenn sie nur über die MySQL-Eingabeaufforderung mit dem System interagieren.
phpMyAdmin wurde erstellt, damit Benutzer über eine Weboberfläche mit MySQL interagieren können. In diesem Handbuch wird erläutert, wie Sie phpMyAdmin installieren und sichern, damit Sie damit Ihre Datenbanken auf einem Ubuntu 18.04-System sicher verwalten können.
Voraussetzungen
Bevor Sie mit diesem Handbuch beginnen, müssen Sie einige grundlegende Schritte ausführen.
Zunächst wird davon ausgegangen, dass Ihr Server über einen Benutzer verfügt, der nichtrootmit den Berechtigungensudo
ist, sowie über eine Firewall, die mitufw
konfiguriert ist, wie ininitial server setup guide for Ubuntu 18.04beschrieben.
Wir gehen auch davon aus, dass Sie eine LAMP-Installation (Linux, Apache, MySQL und PHP) auf Ihrem Ubuntu 18.04-Server abgeschlossen haben. Wenn dies noch nicht abgeschlossen ist, können Sie dieser Anleitung unterinstalling a LAMP stack on Ubuntu 18.04 folgen.
Schließlich gibt es wichtige Sicherheitsaspekte bei der Verwendung von Software wie phpMyAdmin, da diese:
-
Kommuniziert direkt mit Ihrer MySQL-Installation
-
Verarbeitet die Authentifizierung mithilfe von MySQL-Anmeldeinformationen
-
Führt Ergebnisse für beliebige SQL-Abfragen aus und gibt sie zurück
Aus diesen Gründen und weil es sich um eine weit verbreitete PHP-Anwendung handelt, die häufig angegriffen wird, sollten Sie phpMyAdmin auf Remote-Systemen niemals über eine einfache HTTP-Verbindung ausführen. Wenn Sie keine vorhandene Domäne mit einem SSL / TLS-Zertifikat konfiguriert haben, können Sie diese Anleitung untersecuring Apache with Let’s Encrypt on Ubuntu 18.04 befolgen. Dazu müssen Sieregister a domain name,create DNS records for your server undset up an Apache Virtual Host eingeben.
Sobald Sie mit diesen Schritten fertig sind, können Sie mit diesem Handbuch beginnen.
[[Schritt-1 - Installation von phpmyadmin]] == Schritt 1 - Installation von phpMyAdmin
Zunächst installieren wir phpMyAdmin aus den Standard-Ubuntu-Repositories.
Dazu aktualisieren Sie den Paketindex Ihres Servers und verwenden dann das Paketsystem vonapt
, um die Dateien abzurufen und auf Ihrem System zu installieren:
sudo apt update
sudo apt install phpmyadmin php-mbstring php-gettext
Daraufhin werden Ihnen einige Fragen gestellt, um Ihre Installation korrekt zu konfigurieren.
[.warning] #Warning: Wenn die Eingabeaufforderung angezeigt wird, wird "apache2" hervorgehoben, abernot ausgewählt. Wenn Sie nichtSPACE
drücken, um Apache auszuwählen, verschiebt das Installationsprogrammnot die erforderlichen Dateien während der Installation. Drücken SieSPACE
,TAB
und dannENTER
, um Apache auszuwählen.
#
-
Wählen Sie für die Serverauswahl
apache2
-
Wählen Sie
Yes
aus, wenn Sie gefragt werden, obdbconfig-common
zum Einrichten der Datenbank verwendet werden soll -
Sie werden dann aufgefordert, ein MySQL-Anwendungskennwort für phpMyAdmin auszuwählen und zu bestätigen
Der Installationsprozess fügt die Konfigurationsdatei phpMyAdmin Apache dem Verzeichnis/etc/apache2/conf-enabled/
hinzu, wo sie automatisch gelesen wird. Sie müssen lediglich die PHP-Erweiterungmbstring
explizit aktivieren. Geben Sie dazu Folgendes ein:
sudo phpenmod mbstring
Starten Sie anschließend Apache neu, damit Ihre Änderungen erkannt werden:
sudo systemctl restart apache2
phpMyAdmin ist jetzt installiert und konfiguriert. Bevor Sie sich jedoch anmelden und mit Ihren MySQL-Datenbanken interagieren können, müssen Sie sicherstellen, dass Ihre MySQL-Benutzer über die für die Interaktion mit dem Programm erforderlichen Berechtigungen verfügen.
[[Schritt 2 - Anpassen der Benutzerauthentifizierung und -berechtigungen]] == Schritt 2 - Anpassen der Benutzerauthentifizierung und -berechtigungen
Bei der Installation von phpMyAdmin auf Ihrem Server wurde automatisch ein Datenbankbenutzer namensphpmyadmin
erstellt, der bestimmte zugrunde liegende Prozesse für das Programm ausführt. Anstatt sich als dieser Benutzer mit dem Administratorkennwort anzumelden, das Sie während der Installation festgelegt haben, wird empfohlen, dass Sie sich entweder als MySQL-Benutzer vonrootoder als Benutzer anmelden, der Datenbanken über die phpMyAdmin-Schnittstelle verwaltet.
Konfigurieren des Passwortzugriffs für das MySQL-Root-Konto
In Ubuntu-Systemen mit MySQL 5.7 (und späteren Versionen) ist der MySQL-Benutzer vonrooto eingestellt, dass er sich standardmäßig mit dem Pluginauth_socket
und nicht mit einem Kennwort authentifiziert. Dies bietet in vielen Fällen etwas mehr Sicherheit und Benutzerfreundlichkeit, kann aber auch kompliziert sein, wenn Sie einem externen Programm - wie phpMyAdmin - den Zugriff auf den Benutzer ermöglichen müssen.
Um sich bei phpMyAdmin als MySQL-Benutzer vonrootanzumelden, müssen Sie die Authentifizierungsmethode vonauth_socket
aufmysql_native_password
umstellen, falls Sie dies noch nicht getan haben. Öffnen Sie dazu die MySQL-Eingabeaufforderung von Ihrem Terminal aus:
sudo mysql
Überprüfen Sie als Nächstes mit dem folgenden Befehl, welche Authentifizierungsmethode jedes Ihrer MySQL-Benutzerkonten verwendet:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Output+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | mysql_native_password | localhost |
| phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)
In diesem Beispiel können Sie sehen, dass sich der Benutzer vonroottatsächlich mit dem Pluginauth_socket
authentifiziert. Führen Sie den folgenden BefehlALTER USER
aus, um das Konto vonrootfür die Authentifizierung mit einem Kennwort zu konfigurieren. Stellen Sie sicher, dass Siepassword
in ein sicheres Passwort Ihrer Wahl ändern:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Führen Sie dannFLUSH PRIVILEGES
aus, um den Server anzuweisen, die Grant-Tabellen neu zu laden und Ihre neuen Änderungen in Kraft zu setzen:
FLUSH PRIVILEGES;
Überprüfen Sie die von jedem Ihrer Benutzer verwendeten Authentifizierungsmethoden erneut, um sicherzustellen, dassroot nicht mehr mit demauth_socket
-Plugin authentifiziert wird:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Output+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | mysql_native_password | localhost |
| phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)
An dieser Ausgabe können Sie erkennen, dass sich der Benutzer vonrootmit einem Kennwort authentifiziert. Sie können sich jetzt alsroot-Benutzer mit dem hier festgelegten Kennwort bei der phpMyAdmin-Benutzeroberfläche anmelden.
Konfigurieren des Kennwortzugriffs für einen dedizierten MySQL-Benutzer
Alternativ könnten einige der Meinung sein, dass es besser für ihren Workflow ist, eine Verbindung zu phpMyAdmin mit einem dedizierten Benutzer herzustellen. Öffnen Sie dazu die MySQL-Shell noch einmal:
sudo mysql
[.Hinweis]##
Note: Wenn Sie die Kennwortauthentifizierung aktiviert haben, wie im vorherigen Abschnitt beschrieben, müssen Sie einen anderen Befehl verwenden, um auf die MySQL-Shell zuzugreifen. Folgendes führt Ihren MySQL-Client mit regulären Benutzerrechten aus und Sie erhalten nur Administratorrechte innerhalb der Datenbank, wenn Sie sich authentifizieren:
mysql -u root -p
Erstellen Sie von dort aus einen neuen Benutzer und geben Sie ihm ein sicheres Passwort:
CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
Gewähren Sie dann Ihrem neuen Benutzer die entsprechenden Berechtigungen. Mit dem folgenden Befehl können Sie beispielsweise allen Tabellen in der Datenbank Benutzerberechtigungen erteilen sowie die Berechtigung zum Hinzufügen, Ändern und Entfernen von Benutzerberechtigungen erteilen:
GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
Beenden Sie anschließend die MySQL-Shell:
exit
Sie können jetzt auf die Weboberfläche zugreifen, indem Sie den Domainnamen oder die öffentliche IP-Adresse Ihres Servers gefolgt von/phpmyadmin
aufrufen:
http://your_domain_or_IP/phpmyadmin
Melden Sie sich an der Schnittstelle an, entweder alsroot oder mit dem neuen Benutzernamen und Passwort, das Sie gerade konfiguriert haben.
Wenn Sie sich anmelden, wird die Benutzeroberfläche angezeigt, die ungefähr so aussieht:
Nachdem Sie sich mit phpMyAdmin verbinden und interagieren können, müssen Sie nur noch die Sicherheit Ihres Systems verbessern, um es vor Angreifern zu schützen.
[[Schritt 3 - Sichern Ihrer phpmyadmin-Instanz]] == Schritt 3 - Sichern Ihrer phpMyAdmin-Instanz
Aufgrund seiner Allgegenwart ist phpMyAdmin ein beliebtes Ziel für Angreifer, und Sie sollten besonders darauf achten, nicht autorisierten Zugriff zu verhindern. Eine der einfachsten Möglichkeiten, dies zu tun, besteht darin, ein Gateway vor der gesamten Anwendung zu platzieren, indem die in Apache integrierten Authentifizierungs- und Autorisierungsfunktionen.htaccess
verwendet werden.
Dazu müssen Sie zuerst die Verwendung von.htaccess
Dateiüberschreibungen aktivieren, indem Sie Ihre Apache-Konfigurationsdatei bearbeiten.
Bearbeiten Sie die verknüpfte Datei, die in Ihrem Apache-Konfigurationsverzeichnis abgelegt wurde:
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Fügen Sie im Abschnitt<Directory /usr/share/phpmyadmin>
der Konfigurationsdatei eine AnweisungAllowOverride All
hinzu:
/etc/apache2/conf-available/phpmyadmin.conf
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
. . .
Wenn Sie diese Zeile hinzugefügt haben, speichern und schließen Sie die Datei.
Starten Sie Apache neu, um die vorgenommenen Änderungen zu implementieren:
sudo systemctl restart apache2
Nachdem Sie.htaccess
für Ihre Anwendung aktiviert haben, müssen Sie eine erstellen, um tatsächlich Sicherheit zu implementieren.
Damit dies erfolgreich ist, muss die Datei im Anwendungsverzeichnis erstellt werden. Sie können die erforderliche Datei erstellen und in Ihrem Texteditor mit Root-Rechten öffnen, indem Sie Folgendes eingeben:
sudo nano /usr/share/phpmyadmin/.htaccess
Geben Sie in diese Datei die folgenden Informationen ein:
/usr/share/phpmyadmin/.htaccess
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
Jede dieser Zeilen bedeutet Folgendes:
-
AuthType Basic
: Diese Zeile gibt den Authentifizierungstyp an, den Sie implementieren. Dieser Typ implementiert die Kennwortauthentifizierung mithilfe einer Kennwortdatei. -
AuthName
: Hiermit wird die Nachricht für das Authentifizierungsdialogfeld festgelegt. Sie sollten dieses Generikum beibehalten, damit nicht autorisierte Benutzer keine Informationen darüber erhalten, was geschützt wird. -
AuthUserFile
: Hiermit wird der Speicherort der Kennwortdatei festgelegt, die für die Authentifizierung verwendet wird. Dies sollte sich außerhalb der Verzeichnisse befinden, die bedient werden. Wir werden diese Datei in Kürze erstellen. -
Require valid-user
: Dies gibt an, dass nur authentifizierten Benutzern Zugriff auf diese Ressource gewährt werden soll. Dies ist es, was tatsächlich unbefugte Benutzer am Betreten hindert.
Wenn Sie fertig sind, speichern und schließen Sie die Datei.
Der Speicherort, den Sie für Ihre Kennwortdatei ausgewählt haben, war/etc/phpmyadmin/.htpasswd
. Sie können diese Datei jetzt erstellen und mit dem Dienstprogrammhtpasswd
an einen Erstbenutzer übergeben:
sudo htpasswd -c /etc/phpmyadmin/.htpasswd username
Sie werden aufgefordert, ein Kennwort für den von Ihnen erstellten Benutzer auszuwählen und zu bestätigen. Anschließend wird die Datei mit dem von Ihnen eingegebenen Hash-Passwort erstellt.
Wenn Sie einen zusätzlichen Benutzer eingeben möchten, müssen Siewithout das-c
-Flag wie folgt ausführen:
sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser
Wenn Sie nun auf Ihr phpMyAdmin-Unterverzeichnis zugreifen, werden Sie aufgefordert, den zusätzlichen Kontonamen und das Passwort einzugeben, die Sie gerade konfiguriert haben:
https://domain_name_or_IP/phpmyadmin
Nach der Eingabe der Apache-Authentifizierung gelangen Sie zur regulären phpMyAdmin-Authentifizierungsseite, auf der Sie Ihre MySQL-Anmeldeinformationen eingeben können. Dieses Setup fügt eine zusätzliche Sicherheitsebene hinzu, die wünschenswert ist, da phpMyAdmin in der Vergangenheit unter Sicherheitslücken gelitten hat.
Fazit
Sie sollten nun phpMyAdmin auf Ihrem Ubuntu 18.04-Server konfiguriert und einsatzbereit haben. Über diese Schnittstelle können Sie auf einfache Weise Datenbanken, Benutzer, Tabellen usw. erstellen und die üblichen Vorgänge wie Löschen und Ändern von Strukturen und Daten ausführen.