phpMyAdmin ist eine mächtige Software zur Verwaltung von MySQL-Datenbanken. Sie ermöglicht nicht nur das erstellen und verwalten von Tabellen. Sie bietet auch eine angenehm zu bedienende grafische Oberfläche im Browser. Somit ist es leicht möglich Tabellen zu verwalten, ohne sich tiefergreifend mit dem MySQL-Syntax zu beschäftigen.
In diesem Artikel möchte ich darauf eingehen, wie man phpMyAdmin so einrichtet, dass es auf entfernte (remote) MySQL-Server zugreifen kann, so dass man mehrere Server von einer Seite aus verwalten kann.
Das Einrichten des Apaches ist schnell getan. Der Apache benötigt lediglich einen Alias über den man phpMyAdmin erreichen können soll und den Pfad zu phpMyAdmin.
Eine Beispielkonfiguration könnte wie folgt ausschauen:
[cce]
Alias /phpMyAdmin/ „/path/to/phpMyAdmin/“
<Directory /path/to/phpMyAdmin/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
[/cce]
Über welchen vHost und welchen Port phpMyAdmin erfolgen soll, ist geschmackssache. Der Zugriff könnte in diesem Fall über http://localhost/phpMyAdmin/ erfolgen. Die Zeile allow from all erlaubt jeden, der Zugriff auf den Apache Server hat, auch den Zugriff auf phpMyAdmin. Um dies einzuschränken könnte man auch allow from 127.0.0.1 für Lokalhost oder 192.168.XXX. für lokales Netzwerk verwenden. Fehlt dann nur mehr der Neustart des Apaches, damit er die Konfiguration auch tatsächlich annimmt.
phpMyAdmin kann auf 2 verschiedene Arten eingerichtet werden: per Hand oder mit dem Setup-Wizard.
Um phpMyAdmin per Hand einzurichten, muss man die Datei config.inc.php im phpMyAdmin Hauptordner editieren
Die Konfiguration könnte wie folgt aussehen:
$i = 0;
/* Server: Server 1 [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = 'Server 1'; // Bezeichnung für den Server
$cfg['Servers'][$i]['host'] = '192.168.XXX.XXX'; // IP oder URL
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
/* Server: Server 2 [2] */
$i++;
$cfg['Servers'][$i]['verbose'] = 'Server 2'; // Bezeichnung für den Server
$cfg['Servers'][$i]['host'] = '192.168.XXX.XXX'; // IP oder URL
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
Hier werden 2 verschiedene MySQL-Server eingerichtet. ‚verbose‘ gibt den Namen an, unter welchem der Server in phpMyAdmin angezeigt wird.
Die Konfiguration über den Wizard muss ein wenig vorbereitet werden. Als Sicherheitsmaßnahme muss ein Ordner config im phpMyAdmin-Basisordner erstellt werden und die Konfiguration dorthin verschoben werden. Anschließend müssen die Rechte so gesetzt werden, dass jeder darauf zugreifen und schreiben darf.
mkdir config
chmod o+rw config
cp config.inc.php config/
chmod o+w config/config.inc.php
Anschließend kann im Browser über /phpMyAdmin/setup auf den Wizard zugegriffen werden.
Nach Beendigung des Einrichten muss die config-Datei wieder in den Basisordner. Die Rechte muss man ändern, damit niemand ohne Berechtigung die Datei zerstören kann.
mv config/config.inc.php .
chmod o-rw config.inc.php
rm -rf config
Zu guter letzt muss man noch den MySQL-Servern beibringen, dass sie Remote-Zugriffe erlauben soll. Als erstes muss die my.cnf Datei bearbeitet werden.
Als ersters muss die Variable skip-networking, sofern vorhanden, auskommentiert oder entfernt werden. Diese Variable verhindert ein lauschen nach TCP-Verbindungen des MySQL-Servers. Anschließend muss die Variable bind-address so gesetzt werden, dass das richtige Netzwerk genommen wird, z.B. nimmt man die lokale Netzwerkadresse.
[mysqld]
user = mysql
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
# bind-address = 127.0.0.1
# skip-networking
bind-address = 192.168.XXX.XXX
Nach einen Neustart des MySQL-Servers muss man noch User-Tabelle so ändern, dass auch fremde Hosts zugreifen können.
update db set Host='{phpMyAdmin-Server}' where Db='webdb';
update user set Host='{phpMyAdmin-Server}' where user='webadmin';
Nach einen weiteren Neustart des MySQL-Servers ist die Einrichtigung fertig und phpMyAdmin kann wie gewünscht verwendet werden.