Installation und Konfiguration von phpMyAdmin

2009-08-07 - kostaki 18 Kommentare »

Theoretisch könnte man LAMP auch in LAMPP umbenennen, den zu den normalen Bestandteilen kommt fast immer auch phpMyAdmin. phpMyAdmin ist einfach einzurichten, aber gibt dem Benutzer die komplette Kontroller über seinen MySQL Server. Natürlich nur insofern der Serveradministrator das auch will. Man kann Benutzern in phpMyAdmin auch nur Zugriff auf eine Datenbank geben. phpMyAdmin muss nicht auf dem gleichen Server installiert werden wie der MySQL Server. Man braucht aber wie der Name schon sagt einen Server der PHP versteht. In diesem Tutorial beschreibe ich die Installation (das entpacken) und die Einrichtung von phpMyAdmin auf einem Debian Apache 2 Worker mit fcgid und SuExec.

Zuerst besorgen ich mir die aktuellste Version von http://www.phpmyadmin.net. Dann wird das Archiv entpackt und an den richtigen Ort kopiert. Als letztes wird die Beispiel config in die richtige Config umbenannt.

$ cd /var/www/vh-phpmyadmin/htdocs
$ wget http://go2.phpmyadmin.net/and/choose/a/download.tar.gz
$ tar -xzvf download.tar.gz
$ cd downloadordner
$ cp -R * /var/www/vh-phpmyadmin/htdocs/public
$ cd /var/www/vh-phpmyadmin/htdocs/public/
$ mv config.sample.inc.php config.inc.php

Nicht vergessen die Rechte richtig zu setzen und dann kann die tar.gz Datei und die Ordner gelöscht werden. Als auth type benutze ich cookie, also noch das blowfish_secret setzen. Da die Standard Session timeouts sehr niedrig sitzen und ich phpMyAdmin den ganzen Tag offen habe, setze ich den Timeout hoch. Es kann sein das ihr noch session.gc_maxlifetime (php.ini) hoch setzen müsst, aber das sagt euch phpMyAdmin. Wie gut das wir eine eigene php.ini für diesen vhost haben. :)

$cfg['blowfish_secret'] = 'V3rYS3cr3tStr1nG';
$cfg['LoginCookieValidity'] = 3600 * 10; //10 Stunden
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['host'] = 'localhost'; //oder eben die MySQL Server IP

Jetzt noch einen htaccess Schutz ins Verzeichnis und man ist fertig. Das ist ganz besonders wichtig um den Script Kiddi Bots den Zugriff zu nehmen.

$ nano /var/www/vh-phpmyadmin/htdocs/public/.htaccess
AuthType Basic
AuthName "Members Only"
AuthUserFile /var/www/vh-phpmyadmin/htdocs/.htpasswd
<limit GET PUT POST>
    require valid-user
</limit>

Und noch das Passwortfile anlegen.

$ htpasswd -c /var/www/vh-phpmyadmin/htdocs/.htpasswd admin

Noch ein paar Tipps:

  • Ich lege für jeden vhost eine eigene Datenbank an
  • Ich lege für jede Datenbank einen eigenen MySQL User an
  • Der MySQL User hat nur Rechte auf seine Datenbank und auch nur von dem Server auf dem der vhost liegt (meistens localhost)
  • Das Passwort des MySQL Users ist nicht das gleiche wie das FTP Passwort

Related Links

Ähnliche Artikel

  1. 18 Kommentare

  2. glabs
    schrieb am 15.12.2009 um 18:09 Uhr

    Hallo,

    vielen Dank für die Tutorials, die sind echt super !

    Ich hab ein Problem mit phpmyadmin. Nachdem ich das vorherige Tutorial durchhatte mit Apache2-mpm, fcgid + suexec, habe ich alles genau wie hier gemacht. Nur bei mir kommt dann ein Downloadfenster wenn ich auf phpmyadmin zugreifen will.

    Wie löse ich das am Besten ?

  3. kostaki
    schrieb am 15.12.2009 um 18:15 Uhr

    hi funktionieren den andere PHP Dateien? Wenn PHP Dateien zum Download angeboten werden, dann weiß der Server meistens nicht was er mit den Dateien machen soll.

    Ich würde jetzt checken ob die VHost Config richtig ist, besonders das der Handler für .php Dateien richtig gesetzt ist und dann im error_log des vhosts nach gucken wenn es immer noch nicht geht. Ansonsten mal eine andere Datei im phpmyadmin vhost anlegen und nur < ?php phpinfo(); ?> rein packen. Testen ob die geht.

  4. glabs
    schrieb am 15.12.2009 um 19:38 Uhr

    Also ich erklär mal was ich bisher gemacht hab und was ich vorhab:
    ich hab eine Domain auf mein Server geroutet und ein Vhost angelegt auf domain.de
    Dort funkt. phpinfo. Ich will aber nicht für jede Domain/Vhost pma installieren, sondern will dass es auf /var/www/phpmyadmin/htdocs/public zugreift.

    hab testweise einen symlink erstellt, hat nicht geklappt. Wieder rückgängig gemacht…

    Jedenfalls das Problem mit dem Downloadfenster besteht nur, wenn ich direkt die Server-IP aufrufe und dann auf phpinfo oder pma zugreifen will. Muss ich dafür die default-config auch editieren ?

    Wie installiere ich pma nur einmal aber dass jeder/authorisierte Benutzer Zugriff haben ?

    Ach noch etwas: Wenn ich auf phpmyadmin anhand obiges Tutorial zugreifen möchte über 00.00.00.00/phpmyadmin/htdocs/public kommt eben dieses Download-Fenster bei allen php-dateien (html geht), über domain.de funktioniert wenigstens phpinfo.

    Sorry für die vielen Fragen… :-)

  5. kostaki
    schrieb am 15.12.2009 um 20:15 Uhr

    Also wenn du nur die IP aufrufst, dann kommst du in den default vhost. Standardmäßig ist das /etc/apache2/sites-available/default. Wenn du bei diesem auch php aktivieren möchtest, dann musst du den vhost anpassen wie im anderen Tutorial beschrieben. Du kannst aber auch einen anderen vhost als default bestimmen. Es ist immer der der als erstes geladen wird. Also der der in sites-enabled ganz oben steht. (Einfach den Symlink nach sites enabled mit 000 am Anfang setzen, dann sollte er ganz oben stehen).

    Ich lege immer einen eigenen vhost für phpmyadmin an und nehme irgend eine subdomain zum aufrufen (phpmyadmin.debianroot.de oder so). Du brauchst auch nur 1 mal phpmyadmin installieren. MySQL hat ja ein eigenes User/Rechte System. d.h. wenn du phpmyadmin aufrufst muss sich der User authentifizieren und sieht nur die Datenbanken für die er die nötigen Rechte hat. Wenn du das gleiche phpmyadmin als Unterverzeichnis bei den anderen vhosts verwenden möchtest (z.B. debianroot.de/phpmyadmin/) dann sollte das mit aliasen direkt in der vhost config funktionieren. So zum Beispiel:

    <VirtualHost *>
        Alias /phpmyadmin/ "/var/www/phpmyadmin/htdocs/public/"
        <Directory /var/www/phpmyadmin/htdocs/public/>
            Options FollowSymLinks
            AllowOverride None
            Order allow,deny
            allow from all
        </Directory>
    </VirtualHost>
    

    Ich hoffe das hilft. Wenn nicht -> weiter Fragen ich helfe gern :)

  6. glabs
    schrieb am 16.12.2009 um 00:32 Uhr

    Du hab das nicht verstanden :-(
    Ganz oben steht “Nicht vergessen die Rechte richtig zu setzen..”. Wie muss ich sie setzen ?

    ich hab ein neues vhost angelegt auf /etc/apache2/sites-available, das von dir eingefügt und a2ensite phpmyadmin gemacht + restart. Aber entw. kommt da ein Download-Fenster oder es steht da Forbidden.

    Ich finde dein vorheriges Tutorial super gut dokumentiert und für Einsteiger verständlich, ich und viele andere wären begeistert, wenn du dieses Tut genauso gut machen würdest :D Ich teste es auch mit meinem Server !

    Gute Nacht..

  7. kostaki
    schrieb am 16.12.2009 um 10:11 Uhr

    Ja scheinbar verstehe ich es wirklich nicht :P

    Mit richtige Rechte beachten ist gemeint das der im vhost definierte User die Dateien (pma) lesen kann. Wenn man sie nicht gerade als dieser entpackt und in den richtigen Ordner kopiert hat, dann gehören sie diesem nämlich nicht. Hiermit löst man dies dann.

    $ chown -R vh-example:vh-example /var/www/vh-phpmyadmin/htdocs
    $ find /var/www/vh-phpmyadmin/htdocs -type d -exec chmod 750 {} +
    $ find /var/www/vh-phpmyadmin/htdocs -type f -exec chmod 640 {} +
    

    Schau bitte mal ins error log des apache. Da sollte stehen ob es an den Zugriffsrechten liegt.

  8. Marus
    schrieb am 10.02.2010 um 18:19 Uhr

    Leider funktioniert der oben genante Downloadlink nicht mehr. Aber direkt von Sourcefourge gehts natürlich auch. Nur so als Hinweis. Mir hats nämlich die Konsole abrauchen lassen :)

  9. kostaki
    schrieb am 10.02.2010 um 18:56 Uhr

    Hehe. Haste dir den “Downloadlink” mal genau an geguckt? :P

  10. Marus
    schrieb am 12.02.2010 um 15:04 Uhr

    Hehe, ja schon aber hey, der Link hätte auch echt sein können. Hab ihn mir natürlich erst genauer angesehen, nachdem mir die Konsole abgeraucht ist ^^

    Was mich jedoch noch einw enig wundert ist, dass die htaccess nicht greift. Wollte das nochmal genauer kontrollieren. Geb dir dann nochmal bescheid.

  11. Neonstriker
    schrieb am 03.06.2010 um 00:04 Uhr

    Ich besitze ein Lamp Server Debian 5.0
    wenn ich Debian Apache 2 Worker mit fcgid und SuExec benutze funktioniert nun wieder alles jedoch bekomme ich immer noch die download aufforderung wenn ich domain.de/phpmyadmin eingebe nach meiner einschätzung muss dies doch mit den zugriffsrechten zusammen hängen oder sehe ich das falsch

  12. kostaki
    schrieb am 03.06.2010 um 08:27 Uhr

    Wie in dem anderen Artikel schon gesagt, weiß der Server nicht was er mit den PHP Dateien machen soll. Da muss irgend etwas falsch konfiguriert sein.

  13. traxxus
    schrieb am 23.08.2010 um 14:06 Uhr

    Weshalb machst du zur Installation nicht einfach apt-get install phpmyadmin?

  14. kostaki
    schrieb am 23.08.2010 um 15:35 Uhr

    Weil ich bei mancher Software selbst entscheiden möchte welche Version ich installieren will. Die Lenny Version ist ja nicht mehr ganz so aktuell.

  15. sh33p
    schrieb am 01.09.2010 um 22:10 Uhr

    hi@ kostaki,

    ich kann neonstrikers Problem nachvollziehen, mir gehtsgenauso. error log spuckt nichts aus. wenn der phpmyadmin vhost als default eingetragen ist läuft es auch, sobald man im anderen fall aber versucht per *.tld/phpmyadmin darauf zuzugreifen, wird dir ein teil der index zum download angeboten :/

  16. kostaki
    schrieb am 02.09.2010 um 08:32 Uhr

    Hm erklärt sich mir leider nicht. :/ Die letzten male als ich dieses Problem hatte, war immer etwas falsch konfiguriert, das aber leicht zu lösen war. Entweder der vhost hatte nen Fehler oder ich hatte vergessen der Apache neu zu starten oder irgend ein Modul war noch nicht geladen… Mir fällt da wirklich nichts mehr weiter ein.

  17. oki84
    schrieb am 03.09.2010 um 23:51 Uhr

    Hey!

    Hab anfangs auch das Problem mit dem index.php Download gehabt. War wirklich nur ein Fehler in der vh-phpmyadmin. Ihr habt wahrscheinlich den Pfad zu CGI etc. Falsch oder eine Kleinigkeit vergessen.

  18. Luis
    schrieb am 24.12.2011 um 13:40 Uhr

    Hi,
    ich habe immer das Problem, das der Mysql Server nicht startet…

    Da kommt immer:
    root@luis:~# /etc/init.d/mysql restart
    Stopping MySQL database server: mysqld.
    Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed!

  19. kostaki
    schrieb am 25.12.2011 um 08:50 Uhr

    Schau mal ins logfile (syslog glaube ich). Da sollte stehen was genau nicht stimmt.

Kommentar schreiben

*

*