Dienstag, 29. Juni 2010

den Zugriff auf phpMyAdmin einschränken

phpMyAdmin ist ein hilfreiches Werkzeug, das allerdings nicht in falsche Hände geraten sollte. Standardmäßig ist es, zumindest unter Debian, nach der Installation für jederman unter http://[Adresse des Webservers]/phpmyadmin erreichbar.

Wer nicht auf dieses Werkzeug verzichten möchte, kann den Zugriff zum Beispiel auf den internen IP Adressbereich einschränken. Wer die phpMyAdmin-Konfiguration im üblichen Verzeichnis (/etc/apache2/sites-available) sucht, sucht vergeblich. Im Verzeichnis /etc/apache2/conf.d befindet sich in meinem Fall (Debian Lenny) ein Link "phpmyadmin.conf" der nach /etc/phpmyadmin/apache.conf zeigt. Ich editiere also:

# vim /etc/phpmyadmin/apache.conf

In der Section Directory (sollte ohnehin ziehmlich am Anfang stehen) füge ich folgende, rot markierte Zeilen ein:

...
Options Indexes FollowSymLinks
DirectoryIndex index.php
Deny from all
Allow from 192.168.0.0/24
...

Die Zeile "Deny from all" bewirkt zunächst, wie unschwer zu erkennen, dass der Zurgiff von allen Quellen gesperrt wird. Anschließend, erlaube ich den Zugriff aus meinem internen Adressbereich. Habe ich den Server bei einem Hoster untergebracht könnte ich hier zB auch auf die öffentliche IP Adresse meines Internetanschlusses einschränken.

Anschließend nicht vergessen die Konfiguration neu zu starten:

# /etc/init.d/apache2 reload

Siehe dazu auch:
http://httpd.apache.org/docs/2.2/howto/access.html

verlorenes/vergessenes MySQL root Passwort zurücksetzen

Weil es mir kürzlich tatsächlich passiert ist - was tun wenn das Kennwort des MySQL root Users nicht mehr stimmt, verloren gegangen ist oder schlicht vergessen wurde. Zugriff als root auf die Konsole vorausgesetzt, wirken folgende Schritte Wunder:

Zunächst stoppt man den MySQL Server:

# /etc/init.d/mysql stop

Dann startet man den MySQL Server, "deaktiviert" dabei aber die Passwortabfrage:

# /usr/bin/mysqld_safe --skip-grant-tables &

(das "&" am Schluss bewirtk, dass der Prozess im Hintergrund gestartet wird)

Nun kann man sich ohne Passwort am MySQL Server anmelden:

# mysql -u root

In der MySQL Shell gibt man nun nacheinander folgende Befehle ein und ersetzt dabei "PasswortNeu" durch das gewünschte neue Passwort!

mysql> use mysql;
mysql> update user set password=PASSWORD('PasswortNeu') where user='root';
mysql> flush privileges;
mysql> quit

Nach der letzten Zeile landet man wieder auf der Shell und muss nun den MySQL Server neu starten:

# /etc/init.d/mysql restart

Anschließend empfiehlt es sich, das neue Passwort noch zu testen:

# mysql -u root -p

Kann man sich erfolgreich anmelden, wäre es unter Umständen ratsam das neue Passwort sicher in einem Passwortsafe abzulegen...