MySQL-​Server auf lokales phpMyAdmin tunneln

Von in linux, netzthetik, php

phpMy­Ad­min wird vie­ler­orts kon­tro­ver­si­ell dis­ku­tiert. Maso­chis­ten Puris­ten ver­gnü­gen sich lie­ber auf der Kom­man­do­zei­le, Sicher­heits­ex­per­ten ist die Instal­la­ti­on von phpMy­Ad­min ein Dorn im Auge und Web­ent­wick­ler schimp­fen über die benut­zer­un­freund­li­che Ober­flä­che. Tat­sa­che ist, dass ein Ser­ver, der nur über SSH erreich­bar ist und kei­ne phpMyAdmin-​Installation erlaubt oder ermög­licht, zum Pro­blem wer­den kann, will man mit ihm nicht müh­sam über die Kom­man­do­zei­le kom­mu­ni­zie­ren. Es exis­tie­ren zwar Pro­gram­me, die bereits von sich aus einen Tun­nel auf­bau­en kön­nen und sehr kom­for­ta­bel zu admi­nis­trie­ren sind, ich möch­te in die­sem Arti­kel aber die Pro­ble­ma­tik mit phpMy­Ad­min beleuch­ten. Sich den ent­fern­ten MySQL-​Server auf die loka­le phpMyAdmin-​Installation umzu­lei­ten hat näm­lich auch gro­ße Vor­tei­le, selbst wenn am Ser­ver phpMy­Ad­min ver­füg­bar sein soll­te. Da sich die Benut­zer­ober­flä­che in ver­schie­de­nen Ver­sio­nen teils stark unter­schei­det kann es oft ner­vig sein, auf unter­schied­li­chen Ser­vern ein und die sel­be Soft­ware mit völ­lig unter­schied­li­chem Inter­face vor­zu­fin­den. Außer­dem muss man so immer nur eine ein­zi­ge Instal­la­ti­on von phpMy­Ad­min aktu­ell hal­ten, auch wenn man von sei­nem Arbeits­platz zig Datenbank-​Server admi­nis­triert. Dar­um möch­te ich hier zei­gen, wie man über SSH einen Tun­nel zum ent­fern­ten Ser­ver auf­baut, damit man über eine eige­ne phpMyAdmin-​Konfiguration bequem die Daten­bank ver­wal­ten kann.

Den Secu­re Shell Tun­nel auf­zu­bau­en ist kei­ne Hexe­rei. Wir benö­ti­gen dafür auf der Kon­so­le genau einen Befehl:

test@test / $ ssh -NgL 8888:127.0.0.1:3306 root@example.com

Ein kor­rekt ein­ge­ge­be­nes Pass­wort wird von der Kon­so­le ohne Rück­mel­dung quit­tiert. Wer hier ein ande­res Ver­hal­ten wünscht, muss sich ein wenig in die ver­füg­ba­ren Para­me­ter des SSH-​Befehls ein­le­sen. Ein “-f” wür­de die Aus­füh­rung des Befehls zum Bei­spiel in den Hin­ter­grund set­zen.
Die Kon­so­le las­sen wir geöff­net (ein Schlie­ßen der­sel­ben wür­de auch die Tunnel-​Verbindung kap­pen).

Nun muss noch phpMy­Ad­min kon­fi­gu­riert wer­den. Ich gehe davon aus, dass phpMy­Ad­min lokal instal­liert ist und im Brow­ser des gerings­ten Miss­trau­ens über fol­gen­de Adres­se bei­spiel­haft auf­ruf­bar ist:

http://localhost/phpmyadmin

Dar­an soll sich auch nichts ändern. Anpas­sen müs­sen wir nur das Konfigurations-​Skript, etwa unter fol­gen­der Adres­se (kann vari­ie­ren):

vim /etc/phpmyadmin/config.inc.php

Hier suchen wir uns jene Bedin­gung, die das $cfg-​Array defi­niert. Sie beginnt wie folgt:

/* Configure according to dbconfig-common if enabled */
if (!empty($dbname)) {
    $cfg['Servers'][$i]['auth_type'] = 'cookie';
    [...]
}

Die Bedin­gung endet mit fol­gen­dem Ein­trag:

/* Advance to next server for rest of config */
    [...]
    $i++;
}

Und genau vor der schlie­ßen­den geschwun­ge­nen Klam­mer, und nach “$i++”, fügen wir nun die zusätz­li­che Kon­fi­gu­ra­ti­on zu unse­rem getun­nel­ten MySQL-​Server ein:

    
    [...]
    $i++;

    $cfg['Servers'][$i]['host'] = '127.0.0.1';
    $cfg['Servers'][$i]['port'] = '8888';
    $cfg['Servers'][$i]['connect_type'] = 'tcp';
    $cfg['Servers'][$i]['auth_type'] = 'cookie';
    $cfg['Servers'][$i]['AllowNoPassword'] = FALSE;

}

Die­se Kon­fi­gu­ra­ti­on ist bei­spiel­haft und kann natür­lich ange­passt wer­den. Auf jeden Fall fin­det man nun unter der Adres­se localhost/​phpmyadmin im Pull­down “Ser­ver Aus­wäh­len” [sic!] den zusätz­li­chen Ein­trag “127.0.0.1:8888”. Wählt man die­sen aus und trägt Benut­zer­na­me und Pass­wort des MySQL-​Servers ein, soll­te ein Klick auf “Ok” nun die Daten­ban­ken des getun­nel­ten MySQL-​Servers anzei­gen.

Share on LinkedInShare on Redditshare on TumblrShare on StumbleUponDigg thisShare on FacebookGoogle+Tweet about this on TwitterEmail to someone