PHP und Mysql

  • Voraussetzung: MySQL Benutzer mit Passwort vorhanden

    Damit ihr euch per phpMyAdmin mit dem MySQL-Datenbankserver verbinden könnt, muss ein MySQL-Benutzer mit Passwort erstellt werden.

    Standardmäßig ist der MySQL root-User unter Ubuntu 18.04 so konfiguriert, dass sich nur der Unix root-User mit der Datenbank verbinden kann. phpMyAdmin wird aber aus Sicherheitsgründen nicht als root-User ausgeführt. Damit wir uns per phpMyAdmin mit der Datenbank verbinden können, ist deswegen nötig einen neuen Benutzer mit Passwort zu erstellen.

    Ein neuer Benutzer kann wie folgt erstellt werden:

    Code
    1. sudo mysql -e "CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';"
    2. sudo mysql -e "GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost' WITH GRANT OPTION;"
    3. sudo mysql -e "FLUSH PRIVILEGES;"

    Ihr müsst newuser und password entsprechend mit eurem Benutzernamen und einem sicheren Passwort ersetzen.

    Danach könnt ihr testen, ob ihr euch mit dem MySQL-Server wie folgt verbinden könnt:

    Code
    1. mysql -u newuser -p

    Wenn der Login mit Benutzername und Passwort funktioniert hat könnt ihr anfangen phpMyAdmin zu installieren.

    Express-Setup: Alle Befehle im Überblick

    Nachfolgend die Befehle im Überblick zur Installation von phpMyAdmin auf Ubuntu 18.04.


    In den nächsten Abschnitten sind die einzelnen Schritte noch mal im Detail erklärt.

    Schritt 1 – Notwendige Abhängigkeiten installieren

    Damit phpMyAdmin läuft, werden die PHP-Erweiterungen mysqli, mbstring sowie zip benötigt. Ebenso benötigen wird unzip zum Entpacken der zip-Datei:

    Code
    1. sudo apt install php-mysql php-mbstring php-zip unzip

    Als nächstes müssen wir die mysqli und mbstring-Erweiterung noch aktivieren:

    Code
    1. sudo phpenmod mysqli
    2. sudo phpenmod mbstring
    3. sudo phpenmod zip

    Schritt 2 – phpMyAdmin herunterladen & entpacken

    Ihr könnt entweder auf www.phpmyadmin.net die letzte Version von phpMyAdmin herunterladen und in euren Webspace-Ordner entpacken nach /var/www/phpmyadmin. Oder ihr könnt folgende Shell-Befehle verwenden:

    Code
    1. # Download & Entpacken der letzten phpMyAdmin-Version
    2. wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip
    3. unzip phpMyAdmin-latest-all-languages.zip
    4. # Erstelle Ordner /var/www/phpmyadmin und kopiere entpackte Dateien
    5. sudo mkdir /var/www/phpmyadmin
    6. sudo cp -r phpMyAdmin-*/* /var/www/phpmyadmin/

    Dies lädt die neueste phpMyAdmin-Version herunter, entpackt diese, erstellt einen Ordner /var/www/phpmyadmin und kopiert die entpackten die Dateien in dieses Verzeichnis.

    Schritt 3 – Rechte anpassen

    Damit phpMyAdmin optimal laufen kann, sollten die Dateien den Besitzer und die Gruppe www-data haben. Ebenso sollten die Zugriffsrechte auf 755 gesetzt werden.

    Code
    1. sudo nano /etc/apache2/conf-available/phpmyadmin.conf

    Diese Datei erhält folgenden Inhalt:

    Code
    1. #Inhalt der Datei /etc/apache2/conf-available/phpmyadmin.conf
    2. Alias /phpmyadmin /var/www/phpmyadmin/
    3. <Directory /var/www/phpmyadmin/>
    4. AllowOverride all
    5. </Directory>

    Zum Abschluss müssen wird diese Konfiguration noch aktivieren und Apache die Konfiguration neu laden lassen:

    Code
    1. sudo a2enconf phpmyadmin
    2. sudo systemctl reload apache2

    phpMyAdmin Aufrufen

    Sofern ihr bei der Installation die automatische Konfiguration für Apache2 ausgewählt habt, könnt ihr phpMyAdmin unter folgender URL aufrufen:

    http://domain_oder_ip/phpmyadmin


    [Blockierte Grafik: https://www.webhosterwissen.de/wp-content/uploads/2018/09/phpmyadmin_start.png]



    Als Benutzername und Passwort müsst ihr die Login-Daten von einem MySQL-Datenbankbenutzer eingeben. Weiter oben im Artikel, im Abschnitt Voraussetzung: MySQL Benutzer mit Passwort vorhanden wurde erklärt, wie man per Kommandozeile einen MySQL-Benutzer mit Passwort erstellen kann.

    phpMyAdmin per .htaccess absichern

    phpMyAdmin ist ein beliebtes Ziel von Angreifer. Als zusätzlichen Schutz empfiehlt es sich, phpMyAdmin komplett per Passwort abzusichern. Dies geht über eine entsprechende .htaccess-Datei.

    Im phpMyAdmin-Verzeichnis erstellen wir eine neue .htacces-Datei:

    Code
    1. sudo nano /var/www/phpmyadmin/.htaccess

    Diese erhält folgenden Inhalt:

    Code
    1. AuthType Basic
    2. AuthName "Restricted Files"
    3. AuthUserFile /var/www/phpmyadmin/.htpasswd
    4. Require valid-user

    Diese Zeilen bedeuten dabei:

    • AuthType: Die Art der Passwort-Authentifizierung. Basic bedeutet eine einfache Eingabe von Benutzername und Passwort.
    • AuthName: Eine Nachricht, die der Benutzer vor dem Login erhält.
    • AuthUserFile: Der Pfad für die Passwortdatei, die wir im nächsten Schritt erstellen.
    • Require valid-user: Nur korrekt authentifizierte Benutzer können phpMyAdmin nutzen.


    Zum Schluss müssen wir noch die .htpasswd-Datei erstellen:

    Code
    1. sudo htpasswd -c /var/www/phpmyadmin/.htpasswd USERNAME

    Tauscht dabei USERNAME mit dem gewünschten Benutzernamen aus.

    Wenn ihr nun phpMyAdmin aufruft, sollte der folgende Dialog auftauchen:

    [Blockierte Grafik: https://www.webhosterwissen.de/wp-content/uploads/2018/09/phpMyAdmin_htaccess.png]


    Dort müsst ihr den per htpasswd definierten Benutzernamen und Passwort eingeben. Erst dann erscheint das eigentliche phpMyAdmin-Formular, um euch an der MySQL-Datenbank anzumelden.

    Dieser doppelte Passwort-Schutz hat den Vorteil, dass phpMyAdmin komplett von außen vor Angriffen abgeschirmt ist.