Problem:
Die Datenbank-Administrations-Software phpMyAdmin ist eine schöne Sache. Viele Entwickler, PHP-Coder und Webdesigner kennen sie und verlangen danach auf einem Produktiv-Server.
Nur wenn es nicht von Vornherein auf dem Server installiert ist (z.B. von Plesk oder Confixx) muss man es nachinstallieren. Und hier stellt sich die erste Frage:
Von Hand manuell aus einem Tarball? Oder nehmen wir gleich das Distributionspaket?
Antworten:
Vorab: Das Projekt phpMyAdmin ist unter ständiger Entwicklung. D.h. dass ständig neue Features dazu kommen und diese auch Security-Gründen häufig einem Update erlegen. Die Updates in einem Distributionspaket hingegen sind reine Bugfixing-Updates und kommen auch nicht so schnell hinterher wie die Originale.
Auf der anderen Seite: Wofür braucht man die ständigen neuen Features?
Im Grunde läuft die Admin-Software so wie sie ist. Solange die wesentlichen Security-Bugfixes kommen reicht dies für die Sicherheit. Und ein apt-get install phpmyadmin
geht als Update weit aus schneller als alles wieder per Hand zu entpacken.
Anleitung
Aber auch die Installation aus dem Debian-Paket hat seine Tücken. Denn apt
installiert lediglich das Paket. Es wird aber nirgendwo in die Apache-Konfiguration eingebunden. Denn hier wird dem Server-Admin nicht die Hände gebunden sondern alles offen gelassen:
Wie möchte ich phpMyAdmin einbinden?
- In jeder Website:
http://domain.tld/phpmyadmin/
- Unter der Server-Domain/-IP:
http://123.123.123.123/phpmyadmin/
- Eigene Subdomain:
http://phpmyadmin.123.123.123.123/
Die ersten 2 Versionen müssen mit Alias
und Directory
in den jeweiligen VirtualHost
-Angaben konfiguriert werden. Hier ein Beispiel:
<VirtualHost *:80>
...
Alias /phpmyadmin/ "/usr/share/phpmyadmin/"
<Directory>
include /etc/phpmyadmin/apache.conf
</Directory>
</VirtualHost>
Ich persönlich bevorzuge die dritte Lösung als eigene Subdomain und zwar direkt ausschließlich über SSL.
Hier die /etc/apache2/sites-available/phpmyadmin.server2.conf
:
<IfModule mod_ssl.c>
<VirtualHost MEINE-IP:443>
ServerName phpmyadmin.server2.de
ServerAlias phpmyadmin.server2.de
DocumentRoot "/usr/share/phpmyadmin"
LogLevel warn
include /etc/phpmyadmin/apache.conf
SSLEngine On
SSLCipherSuite HIGH:MEDIUM
SSLCertificateFile /etc/ssl/private/ssl-cert-phpmyadmin.crt
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-phpmyadmin.key
</VirtualHost>
</IfModule>
Das Debian-Paket liefert bereits alle nötigen Einstellungen für den Apache mit damit phpMyAdmin richtig rund läuft:
/etc/phpmyadmin/apache.conf
Es muss nur an der richtigen Stelle includiert werden. Bei den Alias
-Versionen muss sie in der Directory
-Anweisung eingebunden werden. Als eigene Subdomain direkt im VirtualHost
.
Wie man noch sieht, habe ich mir ein eigenes Zertifikat für phpMyadmin angelegt. Man kann aber auch das von Apache mitgelieferte SnakeOil-Cert nutzten.
Weitere Einrichtung:
Einen wesentlichen Mehrwert bietet phpMyAdmin sobald es eine eigene Datenbank pmadb
hat in der es Informationen speichern kann. Z.B. Tabellen-Relationen oder die letzten gewählten SQL-Statements.
Normalerweise wird diese Tabelle mit einem SQL-Script angelegt, welches sich in phpMyAdmin-Verzeichnis unter ./scripts/create_tables.sql
versteckt.
Der Debian-Maintainer hat es aber woanders versteckt und per gzip gepackt. Also muss es anderweitig eingespielt werden:
zcat /usr/share/doc/phpmyadmin/examples/create_tables.sql.gz | mysql -uroot -p
Danach muss dem Script noch gesagt werden, dass diese Datenbank existiert:
In der /etc/phpmyadmin/config.inc.php
müssen folgende Zeile angehängt werden:
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
Datenbank information_schema
ausblenden:
Auch dies kann man in der config.inc.php
konfigurieren:
$cfg['Servers'][$i]['hide_db'] = '(information_schema|phpmyadmin|mysql)';
Hier wier auch gleich die mysql
und die oben eingerichtete phpmyadmin
Datenbank ausgeblendet.