phpMyAdmin mit nginx und MySQL installieren
phpMyAdmin ist eine Weboberfläche zur Verwaltung von MySQL-/MariaDB-Datenbanken. Da das offizielle Debian/Ubuntu-Paket standardmäßig auf Apache ausgelegt ist, richten wir es hier manuell mit nginx und PHP-FPM ein.
Voraussetzungen
- Ein laufender nginx-Webserver
- Root-Zugriff (bzw.
sudo-Rechte)
Schritt 1: MySQL/MariaDB installieren
sudo apt update
sudo apt install mysql-server -y
sudo mysql_secure_installationFolge dem Assistenten von mysql_secure_installation, um ein root-Passwort zu setzen, anonyme Benutzer zu entfernen und Remote-root-Logins zu deaktivieren.
Schritt 2: PHP-FPM und benötigte Erweiterungen installieren
sudo apt install php-fpm php-mysql php-mbstring php-zip php-gd php-json php-curl -yErmittle die installierte PHP-Version (wird für die nginx-Konfiguration benötigt):
php -vSchritt 3: phpMyAdmin herunterladen
cd /usr/share
sudo wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
sudo tar xzf phpMyAdmin-latest-all-languages.tar.gz
sudo mv phpMyAdmin-*-all-languages phpmyadmin
sudo rm phpMyAdmin-latest-all-languages.tar.gzKonfigurationsdatei aus der Vorlage erstellen:
sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.phpÖffne die Datei und trage bei $cfg['blowfish_secret'] eine zufällige, mindestens 32 Zeichen lange Zeichenkette ein (z. B. erzeugt mit openssl rand -base64 32):
sudo nano /usr/share/phpmyadmin/config.inc.phpTemporäres Verzeichnis anlegen und Rechte setzen:
sudo mkdir -p /usr/share/phpmyadmin/tmp
sudo chown -R www-data:www-data /usr/share/phpmyadmin/tmpSchritt 4: nginx-Server-Block einrichten
sudo nano /etc/nginx/sites-available/phpmyadminserver {
listen 80;
server_name phpmyadmin.deinedomain.de;
root /usr/share/phpmyadmin;
index index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}PHP-Version anpassen
Ersetze php8.2-fpm.sock durch die auf deinem Server tatsächlich installierte PHP-FPM-Version (siehe php -v in Schritt 2, Socket-Dateien liegen unter /run/php/).
Konfiguration aktivieren und nginx neu laden:
sudo ln -s /etc/nginx/sites-available/phpmyadmin /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginxSchritt 5: Zugriff testen
Rufe im Browser auf:
http://phpmyadmin.deinedomain.deMelde dich mit einem MySQL-Benutzer an (z. B. root und dem in Schritt 1 gesetzten Passwort, oder einem eigens angelegten Datenbank-Benutzer).
Öffentlichen Zugriff absichern
phpMyAdmin ist ein beliebtes Angriffsziel. Sichere den Zugriff zusätzlich ab, z. B. durch:
- HTTP Basic-Auth vor phpMyAdmin (
auth_basicin nginx) - IP-Beschränkung auf vertrauenswürdige Adressen
- Ein SSL-Zertifikat via Certbot
Troubleshooting
- 502 Bad Gateway: Der PHP-FPM-Socket-Pfad in der nginx-Konfiguration stimmt nicht mit der installierten PHP-Version überein – prüfe
/run/php/. - "Cannot log in to the MySQL server": Prüfe Benutzername/Passwort sowie, ob der MySQL-Benutzer per
localhostoder%(remote) zugelassen ist. - Weiße Seite / kein PHP wird ausgeführt: Prüfe, ob PHP-FPM läuft (
sudo systemctl status php8.2-fpm) und dielocation ~ \.php$-Direktive korrekt in der nginx-Konfiguration steht.