Dieses Tutorial zeigt Ihnen, wie Sie phpMyAdmin mit Nginx, MariaDB und PHP7.2 (LEMP) auf Ubuntu 18.04 installieren. phpMyAdmin ist ein kostenloses und quelloffenes webbasiertes Datenbankverwaltungstool, das in PHP geschrieben ist. Es bietet eine grafische Webschnittstelle für Benutzer zum Verwalten von MySQL- oder MariaDB-Datenbanken. Außerdem erfahren Sie, wie Sie die Zwei-Faktor-Authentifizierung auf phpMyAdmin aktivieren.
Voraussetzungen
Um diesem Tutorial zu folgen, muss ein Ubuntu 18.04-Betriebssystem auf Ihrem lokalen Computer oder auf einem Remote-Server ausgeführt werden. Wenn Sie nach einem VPS (Virtual Private Server) suchen, können Sie auf diesen speziellen Link klicken, um 100 $ kostenloses Guthaben auf DigitalOcean zu erhalten. (Nur für neue Benutzer). Wenn Sie bereits DigitalOcean-Benutzer sind, können Sie auf diesen speziellen Link klicken, um ein kostenloses Guthaben von 50 $ für Vultr zu erhalten (nur für neue Benutzer).
Es wird davon ausgegangen, dass Sie den LEMP-Stack bereits auf Ubuntu 18.04 installiert haben. Wenn nicht, sehen Sie sich bitte das folgende Tutorial an.
- So installieren Sie den LEMP-Stack (Nginx, MariaDB, PHP7.2) unter Ubuntu 18.04
Lassen Sie uns damit beginnen, phpMyAdmin zu installieren.
Schritt 1:Laden Sie phpMyAdmin herunter und installieren Sie es
phpMyAdmin ist im Software-Repository von Ubuntu 18.04 enthalten, sodass wir es einfach mit dem folgenden Befehl installieren können.
sudo apt update sudo apt install phpmyadmin
Während der Installation werden Sie aufgefordert, einen zu konfigurierenden Webserver auszuwählen. Nginx ist nicht in der Liste, drücken Sie also die Tabulatortaste und drücken Sie OK, um diesen Schritt zu überspringen.
Wählen Sie als Nächstes Ja, um eine neue Datenbank zu erstellen, und lassen Sie dbconfig-common
um es zu konfigurieren.
Dadurch wird auch ein neuer Datenbankbenutzer namens phpmyadmin
erstellt . Geben Sie diesem Benutzer ein Passwort.
Sobald dies erledigt ist, wird eine neue Datenbank namens phpmyadmin
erstellt erstellt und der Datenbankbenutzer phpmyadmin
verfügt über die erforderlichen Berechtigungen zum Verwalten dieser Datenbank. Wenn Sie genauso neugierig sind wie ich, können Sie sich bei MariaDB anmelden und überprüfen, welche Berechtigungen phpmyadmin
haben Benutzer wurde gewährt.
Sie können den folgenden Befehl verwenden, um sich beim MariaDB-Server anzumelden.
sudo mysql -u root
Überprüfen Sie dann die Berechtigungen.
show grants for [email protected];
Ausgabe:
Wie Sie sehen können, Benutzer phpmyadmin
hat alle Rechte auf die Datenbank phpmyadmin
. Jetzt können Sie beenden, indem Sie Folgendes ausführen:
exit;
Schritt 2:Nginx-Serverblock erstellen
Um auf die phpMyAdmin-Weboberfläche zugreifen zu können, müssen wir einen Nginx-Serverblock erstellen, indem wir den folgenden Befehl ausführen.
sudo nano /etc/nginx/conf.d/phpmyadmin.conf
Wir werden es so konfigurieren, dass wir über eine Subdomain auf phpMyAdmin zugreifen können. Fügen Sie den folgenden Text in die Datei ein. Ersetzen Sie pma.example.com
mit Ihrer tatsächlichen Subdomain und vergessen Sie nicht, dafür einen A-Eintrag zu erstellen.
server { listen 80; listen [::]:80; server_name pma.example.com; root /usr/share/phpmyadmin/; index index.php index.html index.htm index.nginx-debian.html; access_log /var/log/nginx/phpmyadmin_access.log; error_log /var/log/nginx/phpmyadmin_error.log; location / { try_files $uri $uri/ /index.php; } location ~ ^/(doc|sql|setup)/ { deny all; } location ~ \.php$ { fastcgi_pass unix:/run/php/php7.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include snippets/fastcgi-php.conf; } location ~ /\.ht { deny all; } }
Ihre phpMyAdmin-Dateien befinden sich in /usr/share/phpmyadmin/
Verzeichnis. Speichern und schließen Sie die Datei. Testen Sie dann die Nginx-Konfigurationen.
sudo nginx -t
Wenn der Test erfolgreich ist, laden Sie Nginx neu, damit die Änderungen wirksam werden.
sudo systemctl reload nginx
Jetzt sollten Sie über
auf die phpMyAdmin-Weboberfläche zugreifen könnenpma.example.com
Beachten Sie, dass phpMyAdmin in neueren Versionen von Firefox nicht funktioniert. Sie können Google Chrome verwenden, um die phpMyAdmin-Weboberfläche zu besuchen. Bevor Sie Benutzeranmeldeinformationen in das Anmeldeformular eingeben, aktivieren wir HTTPS.
Schritt 3:TLS-Zertifikat installieren
Um die phpMyadmin-Weboberfläche zu sichern, können wir ein kostenloses TLS-Zertifikat von Let’s Encrypt installieren. Installieren Sie den Let’s Encrypt-Client aus dem Ubuntu 18.04-Software-Repository wie folgt:
sudo apt install certbot python3-certbot-nginx
Python3-certbot-nginx
ist das Nginx-Plugin für Certbot. Führen Sie nun den folgenden Befehl aus, um das TLS-Zertifikat zu erhalten und zu installieren.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --must-staple -d pma.example.com --email your-email-address
Erklärung:
- –nginx :Verwenden Sie den Nginx-Authentifikator und das Installationsprogramm
- –stimme zu :Nutzungsbedingungen von Let’s Encrypt akzeptieren
- –Weiterleitung :301-Weiterleitung hinzufügen.
- –hsts :Strict-Transport-Security-Header zu jeder HTTP-Antwort hinzufügen.
- –staple-ocsp :Aktiviert OCSP-Heften.
- – muss geheftet werden :Fügt dem Zertifikat die Erweiterung OCSP Must Staple hinzu.
- -d Flag folgt eine durch Kommas getrennte Liste von Domänennamen. Sie können bis zu 100 Domainnamen hinzufügen.
- –E-Mail :E-Mail, die für die Registrierung und den Wiederherstellungskontakt verwendet wird.
Sie werden gefragt, ob Sie E-Mails von EFF (Electronic Frontier Foundation) erhalten möchten. Nachdem Sie J oder N ausgewählt haben, wird Ihr TLS-Zertifikat automatisch bezogen und für Sie konfiguriert, was durch die folgende Meldung angezeigt wird.
Testen Sie Ihr TLS-Zertifikat
Gehen Sie zu ssllabs.com, um Ihr TLS-Zertifikat und Ihre Konfiguration zu testen. Sie sollten A+ erhalten weil HSTS aktiviert ist.
Anmeldefehler beheben
Wenn Sie sich mit dem MariaDB-Root-Konto anmelden, wird möglicherweise der folgende Fehler angezeigt.
#1698 - Access denied for user 'root '@'localhost'
und
mysqli_real_connect(): (HY000/1698): Access denied for user 'root '@'localhost'
Wenn Sie sich mit dem Benutzer phpmyadmin
anmelden , wird der obige Fehler nicht angezeigt. Allerdings Benutzer phpmyadmin
kann nur zur Verwaltung von phpmyadmin
verwendet werden Datenbank. Die Ursache des Fehlers liegt darin, dass der MariDB-Root-Benutzer standardmäßig über das unix_socket-Plugin authentifiziert wird, anstatt das mysql_native_password
zu verwenden Plugin. Um dieses Problem zu umgehen, können wir einen weiteren Admin-Benutzer erstellen und dem neuen Admin-Benutzer alle Berechtigungen gewähren.
Melden Sie sich über die Befehlszeile beim MariaDB-Server an.
sudo mariadb -u root
Erstellen Sie einen Admin-Benutzer mit Passwortauthentifizierung.
create user [email protected] identified by 'your-chosen-password';
Gewähren Sie alle Berechtigungen für alle Datenbanken.
grant all privileges on *.* to [email protected] with grant option;
Berechtigungen leeren und beenden;
flush privileges; exit;
Jetzt können Sie sich mit dem Admin-Konto bei phpMyAmin anmelden und alle Datenbanken verwalten.
Einen anderen Port verwenden
Die Verwendung eines anderen Ports anstelle des Standardports 443 kann vorteilhaft sein, da Sie diesen Port schließen können, wenn Sie phpMyAdmin nicht verwenden, um Hacking-Aktivitäten zu verhindern, oder Sie können festlegen, welche IP-Adressen auf diesen Port zugreifen dürfen. Es ist sehr einfach zu konfigurieren. Öffnen Sie einfach die Serverblockdatei.
sudo nano /etc/nginx/conf.d/phpmyadmin.conf
Suchen Sie die folgenden zwei Zeilen:
listen [::]:443 ssl ipv6only=on; # managed by Certbot listen 443 ssl; # managed by Certbot
Ändern Sie 443 in einen anderen Port, z. B. 8443.
listen [::]:8443 ssl ipv6only=on; # managed by Certbot listen 8443 ssl; # managed by Certbot
Sie können ihnen auch http2 wie unten hinzufügen, um das HTTP/2-Protokoll zu aktivieren.
listen [::]:8443 ssl http2 ipv6only=on; # managed by Certbot listen 8443 ssl http2; # managed by Certbot
Speichern und schließen Sie die Datei. Testen Sie dann die Nginx-Konfigurationen.
sudo nginx -t
Wenn der Test erfolgreich ist, laden Sie Nginx neu, damit die Änderungen wirksam werden.
sudo systemctl reload nginx
Jetzt können Sie auf phpMyAdmin zugreifen über:
https://pma.example.com:8443
Installieren Sie die neueste stabile Version von phpMyAdmin
Das Ubuntu 18.04-Repository wird mit PHP7.2 und phpMyAdmin 4.6.6 ausgeliefert. Sie können Ihre phpMyAdmin-Version in der Titelleiste des Browsers überprüfen.
PHP7.2 wird jedoch von phpMyAdmin seit Version 4.7.4 unterstützt. Wenn Sie phpMyAdmin 4.6.6 mit PHP7.2 verwenden, sehen Sie die folgende Warnmeldung.
parameter must be an array or an object that implements countable
Um das Kompatibilitätsproblem zu beheben, können wir phpMyAdmin 4.8 installieren, die zum Zeitpunkt dieses Schreibens die neueste stabile Version ist. Laden Sie es mit wget
herunter .
wget https://files.phpmyadmin.net/phpMyAdmin/4.8.0.1/phpMyAdmin-4.8.0.1-all-languages.zip
Dann extrahieren.
sudo apt install unzip unzip phpMyAdmin-4.8.0.1-all-languages.zip
Sichern Sie die ursprünglichen phpMyAdmin-Dateien.
sudo mv /usr/share/phpmyadmin /usr/share/phpmyadmin-original
Verschieben Sie phpMyadmin 4.8 nach /usr/share/phpmyadmin/
Verzeichnis.
sudo mv phpMyAdmin-4.8.0.1-all-languages /usr/share/phpmyadmin
Bearbeiten Sie die Konfigurationsdatei des Anbieters.
sudo nano /usr/share/phpmyadmin/libraries/vendor_config.php
Suchen Sie die folgende Zeile.
define('CONFIG_DIR', '');
Ändern Sie es in
define('CONFIG_DIR', '/etc/phpmyadmin/');
Speichern und schließen Sie die Datei. Erstellen Sie dann das tmp
Ordner zum Speichern von Cache-Dateien.
sudo mkdir /usr/share/phpmyadmin/tmp
Ändern Sie die Eigentümerschaft des Benutzers und der Gruppe in www-data
.
sudo chown www-data:www-data /usr/share/phpmyadmin/tmp
Jetzt können Sie phpMyAdmin 4.8 verwenden, ohne Nginx neu zu laden oder neu zu starten.
Zwei-Faktor-Authentifizierung aktivieren
Sie können phpMyAdmin auch absichern, indem Sie die Zwei-Faktor-Authentifizierung aktivieren, eine Funktion, die in Version 4.8 hinzugefügt wurde. Um es zu aktivieren, melden Sie sich bei phpMyAdmin an. Gehen Sie dann zu Settings
-> Two-factor authentication
und wählen Sie Authentifizierungsanwendung (2FA) aus .
Nachdem Sie auf Zwei-Faktor-Authentifizierung konfigurieren geklickt haben klicken, wird Ihnen ein QR-Code angezeigt, den Sie mit einer Zwei-Faktor-Authentifizierungs-App auf Ihrem Telefon scannen müssen.
Google Authenticator ist eine beliebte 2FA-App, aber ich empfehle FreeOTP, eine von Red Hat entwickelte Open-Source-2FA-App. Sobald Sie den von Ihrer 2FA-App generierten Authentifizierungscode eingeben, wird die Zwei-Faktor-Authentifizierung aktiviert. Wenn Sie sich jetzt ab- und wieder anmelden, müssen Sie neben Benutzername und Passwort auch den Authentifizierungscode eingeben.
Automatische Verlängerung des Zertifikats
Um das Let’s Encrypt-Zertifikat automatisch zu erneuern, bearbeiten Sie einfach die Crontab-Datei des Root-Benutzers.
sudo crontab -e
Fügen Sie dann unten die folgende Zeile hinzu.
@daily certbot renew --quiet && systemctl reload nginx
--quiet
flag unterdrückt die Standardausgabe. Wenn Sie einen Standardfehler erhalten möchten, fügen Sie die folgende Zeile am Anfang der crontab-Datei hinzu.
MAILTO=your-email-address
Das Neuladen von Nginx ist dafür erforderlich, um den Clients das neue Zertifikat zu präsentieren.
Ich hoffe, dieses Tutorial hat Ihnen geholfen, phpMyAdmin mit Nginx unter Ubuntu 18.04 LTS zu installieren. Wenn Sie diesen Beitrag nützlich fanden, abonnieren Sie wie immer unseren kostenlosen Newsletter, um weitere Tipps und Tricks zu erhalten. Pass auf dich auf.