Wie man phpMyAdmin auf Ubuntu installiert und sichert
Verwendest du nicht Ubuntu 22.04?Wähle eine andere Version oder Distribution aus.
Einführung
Während viele Benutzer die Funktionalität eines Datenbankmanagementsystems wie MySQL benötigen, fühlen sie sich möglicherweise nicht wohl dabei, nur über die MySQL-Eingabeaufforderung mit dem System zu interagieren.
phpMyAdmin wurde erstellt, damit Benutzer über eine Weboberfläche mit MySQL interagieren können. In diesem Handbuch werden wir besprechen, wie man phpMyAdmin installiert und absichert, damit Sie es sicher nutzen können, um Ihre Datenbanken auf einem Ubuntu-System zu verwalten.
Wie man phpMyAdmin auf Ubuntu installiert und sichert
- phpMyAdmin installieren
- Anpassen der Benutzerauthentifizierung und Berechtigungen
- Sichern Sie Ihre phpMyAdmin-Instanz
Voraussetzungen
Um diesen Leitfaden abzuschließen, benötigen Sie:
- Ein Ubuntu-Server. Dieser Server sollte einen Nicht-Root-Benutzer mit Administratorrechten und eine Firewall, die mit
ufwkonfiguriert ist, haben. Um dies einzurichten, folgen Sie unserem Leitfaden zur anfänglichen Servereinrichtung für Ubuntu. - Ein LAMP-Stack (Linux, Apache, MySQL und PHP), der auf Ihrem Ubuntu-Server installiert ist. Wenn dies noch nicht abgeschlossen ist, können Sie dieser Anleitung zur Installation eines LAMP-Stacks auf Ubuntu folgen.
Darüber hinaus gibt es wichtige Sicherheitsüberlegungen bei der Verwendung von Software wie phpMyAdmin, da sie:
- Kommuniziert direkt mit Ihrer MySQL-Installation
- Authentifizierung mit MySQL-Anmeldeinformationen durchführen
- Führt beliebige SQL-Abfragen aus und gibt die Ergebnisse zurück.
Aus diesen Gründen und weil es sich um eine weit verbreitete PHP-Anwendung handelt, die häufig Ziel von Angriffen ist, sollten Sie phpMyAdmin niemals auf entfernten Systemen über eine unverschlüsselte HTTP-Verbindung ausführen.
Wenn Sie kein bestehendes Domänenkonfiguration mit einem SSL/TLS-Zertifikat haben, können Sie diesem Leitfaden zur Sicherung von Apache mit Let's Encrypt auf Ubuntu folgen. Dazu müssen Sie einen Domainnamen registrieren, DNS-Einträge für Ihren Server erstellen und einen Apache-virtuellen Host einrichten.
Schritt 1 — phpMyAdmin installieren
Sie können APT verwenden, um phpMyAdmin aus den standardmäßigen Ubuntu-Repositories zu installieren.
Als Ihr nicht root sudo Benutzer, aktualisieren Sie das Paketindex Ihres Servers, falls Sie dies nicht kürzlich getan haben:
- sudo apt update
Anschließend können Sie das phpmyadmin Paket installieren. Zusammen mit diesem Paket empfiehlt die offizielle Dokumentation auch, dass Sie einige PHP-Erweiterungen auf Ihrem Server installieren, um bestimmte Funktionen zu aktivieren und die Leistung zu verbessern.
Wenn Sie das erforderliche LAMP-Stack-Tutorial befolgt haben, wurden mehrere dieser Module zusammen mit dem php-Paket installiert. Es wird jedoch empfohlen, dass Sie auch diese Pakete installieren:
php-mbstring: Ein Modul zur Verwaltung von Nicht-ASCII-Zeichenfolgen und zur Konvertierung von Zeichenfolgen in verschiedene Kodierungen.php-zip: Diese Erweiterung unterstützt das Hochladen von.zip-Dateien zu phpMyAdminphp-gd: Ermöglicht Unterstützung für die GD-Grafikbibliothek- Bietet PHP Unterstützung für JSON-Serialisierung.
- PHP-curl: Ermöglicht es PHP, mit verschiedenen Arten von Servern unter Verwendung verschiedener Protokolle zu interagieren.
Führen Sie den folgenden Befehl aus, um diese Pakete auf Ihrem System zu installieren. Bitte beachten Sie, dass der Installationsprozess erfordert, dass Sie einige Entscheidungen treffen, um phpMyAdmin korrekt zu konfigurieren. Wir werden diese Optionen in Kürze durchgehen:
- sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl
Hier sind die Optionen, die Sie auswählen sollten, wenn Sie aufgefordert werden, um Ihre Installation korrekt zu konfigurieren:
- Für die Serverauswahl wählen Sie
apache2
Warnung: Wenn die Aufforderung erscheint, ist „apache2“ hervorgehoben, aber nicht ausgewählt. Wenn Sie SPACE nicht drücken, um Apache auszuwählen, wird der Installer die notwendigen Dateien während der Installation nicht verschieben. Drücken Sie SPACE, TAB und dann ENTER, um Apache auszuwählen.
- Wählen Sie
Ja, wenn Sie gefragt werden, obdbconfig-commonzur Einrichtung der Datenbank verwendet werden soll. - Sie werden dann aufgefordert, ein MySQL-Anwendungspasswort für phpMyAdmin auszuwählen und zu bestätigen.
Hinweis: Angenommen, Sie haben MySQL installiert, indem Sie Schritt 2 des erforderlichen LAMP-Stack-Tutorials befolgt haben, dann haben Sie möglicherweise beschlossen, das Validate Password-Plugin zu aktivieren. Zum Zeitpunkt dieses Schreibens wird die Aktivierung dieser Komponente einen Fehler auslösen, wenn Sie versuchen, ein Passwort für den phpmyadmin Benutzer festzulegen:
Um dies zu beheben, wählen Sie die Option abbrechen, um den Installationsprozess zu stoppen. Öffnen Sie dann Ihre MySQL-Eingabeaufforderung:
- sudo mysql
Oder, wenn Sie die Passwortauthentifizierung für den root MySQL-Benutzer aktiviert haben, führen Sie diesen Befehl aus und geben Sie Ihr Passwort ein, wenn Sie dazu aufgefordert werden:
- mysql -u root -p
Führen Sie den folgenden Befehl aus der Eingabeaufforderung aus, um die Validierung des Passworts zu deaktivieren. Beachten Sie, dass dies nicht tatsächlich deinstalliert wird, sondern lediglich stoppt, dass die Komponente auf Ihrem MySQL-Server geladen wird:
- UNINSTALL COMPONENT "file://component_validate_password";
Danach können Sie den MySQL-Client schließen:
- exit
Dann versuchen Sie, das phpmyadmin Paket erneut zu installieren, und es wird wie erwartet funktionieren:
- sudo apt install phpmyadmin
Nachdem phpMyAdmin installiert ist, können Sie die MySQL-Eingabeaufforderung erneut mit sudo mysql oder mysql -u root -p öffnen und dann den folgenden Befehl ausführen, um die Validate Password-Komponente wieder zu aktivieren:
- INSTALL COMPONENT "file://component_validate_password";
Der Installationsprozess fügt die phpMyAdmin Apache-Konfigurationsdatei in das /etc/apache2/conf-enabled/ Verzeichnis ein, wo sie automatisch gelesen wird. Um die Konfiguration von Apache und PHP für die Verwendung mit phpMyAdmin abzuschließen, besteht die einzige verbleibende Aufgabe in diesem Abschnitt des Tutorials darin, die mbstring PHP-Erweiterung ausdrücklich zu aktivieren, was Sie tun können, indem Sie Folgendes eingeben:
- sudo phpenmod mbstring
Starten Sie danach Apache neu, damit Ihre Änderungen erkannt werden:
- sudo systemctl restart apache2
phpMyAdmin ist jetzt installiert und konfiguriert, um mit Apache zu arbeiten. Bevor Sie sich jedoch anmelden und mit Ihren MySQL-Datenbanken interagieren können, müssen Sie sicherstellen, dass Ihre MySQL-Benutzer über die erforderlichen Berechtigungen für die Interaktion mit dem Programm verfügen.
Schritt 2 — Anpassen der Benutzerauthentifizierung und Berechtigungen
Wenn Sie phpMyAdmin auf Ihrem Server installieren, wird automatisch ein Datenbankbenutzer mit dem Namen phpmyadmin erstellt, der bestimmte zugrunde liegende Prozesse für das Programm ausführt. Anstatt sich als dieser Benutzer mit dem Administrationspasswort anzumelden, das Sie während der Installation festgelegt haben, wird empfohlen, sich entweder als Ihr root MySQL-Benutzer oder als ein Benutzer anzumelden, der dafür zuständig ist, Datenbanken über die phpMyAdmin-Oberfläche zu verwalten.
Konfigurieren des Passwortzugriffs für das MySQL-Root-Konto
In Ubuntu-Systemen, die MySQL 5.7 (und neuere Versionen) ausführen, ist der root MySQL-Benutzer standardmäßig so eingestellt, dass er sich über das auth_socket Plugin authentifiziert, anstatt mit einem Passwort. Dies ermöglicht in vielen Fällen eine größere Sicherheit und Benutzerfreundlichkeit, kann jedoch auch die Dinge komplizieren, wenn Sie ein externes Programm - wie phpMyAdmin - den Zugriff auf den Benutzer ermöglichen müssen.
Um sich als Ihr root MySQL-Benutzer bei phpMyAdmin anzumelden, müssen Sie die Authentifizierungsmethode von auth_socket auf eine ändern, die ein Passwort verwendet, falls Sie dies noch nicht getan haben. Öffnen Sie dazu die MySQL-Eingabeaufforderung in Ihrem Terminal:
- sudo mysql
Überprüfen Sie als Nächstes, welche Authentifizierungsmethode jedes Ihrer MySQL-Benutzerkonten mit dem folgenden Befehl verwendet:
- SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$I:jOry?]Sy<|qhQRj3fBRQ43i4UJxrpm.IaT6lOHkgveJjmeIjJrRe6 | 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 |
| phpmyadmin | $A$005$?#{Z?`gN!c2az)}V-INCWXSuVdqB9zWteH1IkZfTe/rOLgVhSzEMM9R3G6K9 | caching_sha2_password | localhost |
| root | | auth_socket | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
6 rows in set (0.00 sec)
Diese Beispielausgabe zeigt, dass der Root-Benutzer tatsächlich mit dem auth_socket-Plugin authentifiziert. Um das Root-Konto so zu konfigurieren, dass es mit einem Passwort authentifiziert, führen Sie den folgenden ALTER USER-Befehl aus. Stellen Sie sicher, dass Sie password durch ein sicheres Passwort Ihrer Wahl ersetzen:
- ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
Hinweis: Die vorherige ALTER USER-Anweisung setzt den root MySQL-Benutzer so, dass er sich mit dem caching_sha2_password-Plugin authentifiziert. Laut 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 weit verbreitete mysql_native_password.
Einige Versionen von PHP funktionieren jedoch nicht zuverlässig mit caching_sha2_password. PHP hat berichtet, dass dieses Problem ab PHP 7.4 behoben wurde, aber wenn Sie später beim Versuch, sich bei phpMyAdmin anzumelden, einen Fehler feststellen, sollten Sie root so einstellen, dass er stattdessen mit mysql_native_password authentifiziert wird:
- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Überprüfen Sie dann erneut die von jedem Ihrer Benutzer verwendeten Authentifizierungsmethoden, um zu bestätigen, dass root sich nicht mehr mit dem auth_socket Plugin authentifiziert:
- SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$I:jOry?]Sy<|qhQRj3fBRQ43i4UJxrpm.IaT6lOHkgveJjmeIjJrRe6 | 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 |
| phpmyadmin | $A$005$?#{Z?`gN!c2az)}V-INCWXSuVdqB9zWteH1IkZfTe/rOLgVhSzEMM9R3G6K9 | caching_sha2_password | localhost |
| root | $A$005$3y�y|Z?'_[} ZyVHuESVwNmjKWOH/ndETwS.Kty0IH7UfiXjOfVvyWroy4a. | caching_sha2_password | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
6 rows in set (0.00 sec)
Dieser Output zeigt, dass der root Benutzer sich mit einem Passwort authentifiziert. Sie können sich nun mit dem Passwort, das Sie hier für ihn festgelegt haben, als Ihr root Benutzer in die phpMyAdmin-Oberfläche einloggen.
Konfigurieren des Passwortzugriffs für einen dedizierten MySQL-Benutzer
Alternativ finden einige, dass es besser zu ihrem Arbeitsablauf passt, sich mit einem dedizierten Benutzer bei phpMyAdmin zu verbinden. Um dies zu tun, öffnen Sie erneut die MySQL-Shell:
- sudo mysql
Wenn Sie die Passwortauthentifizierung für Ihren root-Benutzer aktiviert haben, wie im vorherigen Abschnitt beschrieben, müssen Sie den folgenden Befehl ausführen und Ihr Passwort eingeben, wenn Sie dazu aufgefordert werden, um sich zu verbinden:
- mysql -u root -p
Erstellen Sie von dort aus einen neuen Benutzer und geben Sie ihm ein starkes Passwort:
- CREATE USER 'sammy'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
Hinweis: Je nachdem, welche Version von PHP Sie installiert haben, möchten Sie möglicherweise Ihren neuen Benutzer so einstellen, dass er sich mit mysql_native_password anstelle von caching_sha2_password authentifiziert:
- ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Gewähren Sie dann Ihrem neuen Benutzer die entsprechenden Berechtigungen. Beispielsweise könnten Sie dem Benutzer Berechtigungen für alle Tabellen in der Datenbank sowie die Möglichkeit geben, Benutzerberechtigungen hinzuzufügen, zu ändern und zu entfernen, mit diesem Befehl:
- GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
Danach verlassen Sie 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 besuchen:
https://your_domain_or_IP/phpmyadmin
Melden Sie sich bei der Schnittstelle an, entweder als root oder mit dem neuen Benutzernamen und Passwort, die Sie gerade konfiguriert haben.
Wenn Sie sich anmelden, gelangen Sie zur Benutzeroberfläche von phpMyAdmin:
Jetzt, da Sie in der Lage sind, sich mit phpMyAdmin zu verbinden und zu interagieren, bleibt nur noch zu tun, die Sicherheit Ihres Systems zu stärken, um es vor Angreifern zu schützen.
Schritt 3 — Sichern Ihrer phpMyAdmin-Instanz
Aufgrund seiner Verbreitung ist phpMyAdmin ein beliebtes Ziel für Angreifer, und Sie sollten besondere Vorsichtsmaßnahmen treffen, um unbefugten Zugriff zu verhindern. Eine Möglichkeit, dies zu tun, besteht darin, ein Gateway vor die gesamte Anwendung zu setzen, indem Sie die integrierten .htaccess-Authentifizierungs- und Autorisierungsfunktionen von Apache verwenden.
Um dies zu tun, müssen Sie zuerst die Verwendung von .htaccess-Dateiüberschreibungen aktivieren, indem Sie die Apache-Konfigurationsdatei Ihrer phpMyAdmin-Installation bearbeiten.
Verwenden Sie Ihren bevorzugten Texteditor, um die phpmyadmin.conf-Datei zu bearbeiten, die in Ihrem Apache-Konfigurationsverzeichnis abgelegt wurde. Hier verwenden wir nano:
- sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Fügen Sie eine AllowOverride All-Direktive im <Directory /usr/share/phpmyadmin>-Bereich der Konfigurationsdatei hinzu, wie folgt:
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
AllowOverride All
. . .
Wenn Sie diese Zeile hinzugefügt haben, speichern Sie die Datei und schließen Sie sie. Wenn Sie nano verwendet haben, um die Datei zu bearbeiten, tun Sie dies, indem Sie CTRL + X, Y und dann ENTER drücken.
Um die Änderungen, die Sie vorgenommen haben, umzusetzen, starten Sie Apache neu:
- sudo systemctl restart apache2
Jetzt, da Sie die Verwendung von .htaccess-Dateien für Ihre Anwendung aktiviert haben, müssen Sie eine erstellen, um tatsächlich einige Sicherheitsmaßnahmen umzusetzen.
Damit dies erfolgreich ist, muss die Datei im Anwendungsverzeichnis erstellt werden. Sie können die erforderliche Datei erstellen und sie mit Root-Rechten in Ihrem Texteditor öffnen, indem Sie Folgendes eingeben:
- sudo nano /usr/share/phpmyadmin/.htaccess
Geben Sie in diese Datei die folgenden Informationen ein:
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
Hier ist, was jede dieser Zeilen bedeutet:
AuthType Basic: Diese Zeile gibt den Authentifizierungstyp an, den Sie implementieren. Dieser Typ führt die Passwortauthentifizierung mithilfe einer Passwortdatei durch.AuthName: Dies legt die Nachricht für das Authentifizierungsdialogfeld fest. Sie sollten dies allgemein halten, damit unbefugte Benutzer keine Informationen darüber erhalten, was geschützt wird.AuthUserFile: Dies legt den Speicherort der Passwortdatei fest, die für die Authentifizierung verwendet wird. Diese sollte außerhalb der Verzeichnisse liegen, die bereitgestellt werden. Wir werden diese Datei in Kürze erstellen.Benutzer mit gültigen Anmeldedaten erforderlich: Dies gibt an, dass nur authentifizierte Benutzer Zugriff auf diese Ressource erhalten sollten. Das ist es, was tatsächlich unbefugte Benutzer daran hindert, einzutreten.
Wenn Sie fertig sind, speichern Sie die Datei und schließen Sie sie.
Der Speicherort, den Sie für Ihre Passwortdatei ausgewählt haben, war /etc/phpmyadmin/.htpasswd. Sie können jetzt diese Datei erstellen und ihr mit dem htpasswd Dienstprogramm einen anfänglichen Benutzer übergeben:
- sudo htpasswd -c /etc/phpmyadmin/.htpasswd username
Sie werden aufgefordert, ein Passwort für den Benutzer auszuwählen und zu bestätigen, den Sie erstellen. Danach wird die Datei mit dem von Ihnen eingegebenen Hash-Passwort erstellt.
Wenn Sie einen zusätzlichen Benutzer eingeben möchten, müssen Sie dies ohne das -c Flag tun, so:
- sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser
Starten Sie dann Apache neu, um die .htaccess-Authentifizierung in Kraft zu setzen:
- sudo systemctl restart apache2
Wenn Sie jetzt auf das phpMyAdmin-Unterverzeichnis zugreifen, werden Sie nach dem zusätzlichen Kontonamen und Passwort gefragt, die Sie gerade konfiguriert haben:
https://domain_name_or_IP/phpmyadmin
Nachdem Sie die Apache-Authentifizierung eingegeben haben, werden Sie zur regulären phpMyAdmin-Authentifizierungsseite weitergeleitet, um Ihre MySQL-Anmeldeinformationen einzugeben. Durch Hinzufügen einer zusätzlichen Reihe von Nicht-MySQL-Anmeldeinformationen bieten Sie Ihrer Datenbank eine zusätzliche Sicherheitsebene. Dies ist wünschenswert, da phpMyAdmin in der Vergangenheit anfällig für Sicherheitsbedrohungen war.
Schlussfolgerung
Sie sollten jetzt phpMyAdmin konfiguriert und einsatzbereit auf Ihrem Ubuntu-Server haben. Mit dieser Schnittstelle können Sie Datenbanken, Benutzer und Tabellen erstellen sowie die üblichen Operationen wie das Löschen und Ändern von Strukturen und Daten durchführen.




