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?

  1. In jeder Website: http://domain.tld/phpmyadmin/
  2. Unter der Server-Domain/-IP: http://123.123.123.123/phpmyadmin/
  3. 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.

Kategorien:

Stichwörter:

phpmyadmin · create_tables · pmadb · apache · debian ·