Ein MySQL Authentifikations-Modul für Apache installieren

Donnerstag, 07 Oktober 2004
0.0/5 Bewertung (0 Stimmen)
Beschreibung

Nachdem ich nichts unversucht gelassen hatte um herauszufinden, wie ich ein Verzeichnis mit PHP schütze, damit volle URLs nicht mehr auf statische Bilder zugreifen können, fand ich schliesslich ein Modul für Apache ([URL=http://sourceforge.net/projects/modauthmysql/]mod_auth_mysql[/URL]), dass die Authentifizierung via MySQL steuert. Während dies das Ende für meine schönes PHP-Formular bedeutete, das ich erzeugt hatte, schützte es doch die Dateien. Dies ist mein erster Versuch eine Anleitung zu schreiben, seien Sie also nachsichtig.
Wie man den vorinstallierten Apache Web-Server unter OS X 10.3.5 und MySQL für die Authentifizierzung via mod_auth_mysql konfiguriert - Warum? Weil ich es mag zu übertreiben...
Zuerst müssen Sie MySQL installieren, falls dies nicht bereits geschehen ist. Ich empfehle, dazu das OS X Binary von [URL=http://dev.mysql.com/downloads/mysql/4.0.html]dieser Seite[/URL] auf MySQL.com zu verwenden. Es ist zum Zeitpunkt dieses Beitrags die Version 4.0.21. Zur Installation von MySQL unter OS X gibt es viele Tutorials im Web. Die meisten davon empfehlen, einen Benutzer namens ”mysql” in Netinfo zu erstellen. Das ist nicht nötig, da er bereits vorhanden ist. Installieren Sie das Paket und folgen Sie der beiliegenden Readme-Datei, um Ihr root-Kennwort festzulegen. Installieren Sie auch das MySQLStartupItem.pkg, wenn Sie möchten, dass MySQL beim Systemstart automatisch gestartet wird.
Jetzt wollen wir testen, ob es funktioniert. Tippen Sie folgendes im Terminal ein:

$ alias mysql=/usr/local/mysql/bin/mysql
$ alias mysqladmin=/usr/local/mysql/bin/mysqladmin
$ mysqladmin -u root password root_password
$ mysql -u root -p
Enter Password:

MySQL sollte an diesem Punkt aufstarten. Das ist ein guter Zeitpunkt, um Ihre Benutzer-Datenbank zu erstellen:

mysql>CREATE DATABASE users;
mysql> USE users;
CREATE TABLE user_info (
user_name CHAR(30) NOT NULL,
user_passwd CHAR(20) NOT NULL,
[ any other fields if needed ]
PRIMARY KEY (user)
)
mysql>quit

Hinweis: Ich empfehle [URL=http://www.phpmyadmin.net/home_page/]phpMyAdmin[/URL] zu verwenden um Ihre Datenbank zu verwalten und mit Daten zu füllen. ([URL=http://prdownloads.sourceforge.net/phpmyadmin/phpMyAdmin-2.6.0-pl1.tar.gz?download]v2.6.0-pl1 herunterladen[/URL]).
Sobald das läuft, können Sie das [URL=http://sourceforge.net/projects/modauthmysql/]mod_auth_mysql Modul[/URL] von Sourceforge.net herunterladen; die aktuelle Version ist 2.6.0. Entpacken Sie das Archiv und kompilieren Sie das Paket. Die mitgelieferte Readme-Datei gibt Auskunft darüber, wie das zu tun ist. Unglücklicherweise ist der apxs Befehl im Readme falsch. Verwenden Sie stattdessen diese zwei Zeilen:

$ apxs -c -D lmysqlclient -lm -lz -I/usr/local/mysql/include/ ¬
-L/usr/local/mysql/lib/ mod_auth_mysql.c
$ apxs -i mod_auth_mysql.so

Nun müssen Sie die httpd.conf Datei bearbeiten, um das neue Modul zu aktivieren. Öffnen Sie die Datei dazu in Ihrem bevorzugten Texteditor (ich habe Pico verwendet):

$ sudo pico /etc/httpd/httpd.conf

Das Readme für mod_auth_mysql beschreibt die standard Apache Installationsstruktur um das Mod zu der Konfigurationsdatei hinzuzufügen. OS X hat eine leicht veränderte Apache-Struktur. Statt der original Readme-Zeilen müssen Sie daher folgende Linien an der passenden Stelle einfügen:

LoadModule mysql_auth_module libexec/httpd/mod_auth_mysql.so
AddModule mod_auth_mysql.c

Ich habe ”per-directory” statt .htaccess Dateien verwendet, aber beide sind. Das mod_auth_mysql Readme stellt eine komplette Liste aller verfügbaren Optionen bereit. Während die Readme darauf hinweist, dass das Mod ein bestimmtes Tabellen-Format in Ihrer Datenbank erwartet, musste ich sowieso jedes Feld deklarieren:

<Directory ”/dir/you/want/to/protect/”>
 AuthName ”SOME_THING_HERE”
 AuthType Basic
 AuthGroupFile /dev/null
 AuthMySQLEnable On
 AuthMySQLHost localhost
 AuthMySQLDB users
 AuthMySQLUserTable user_info
 AuthMySQLUser
 AuthMySQLPassword
 AuthMySQLPasswordField user_passwd
 AuthMySQLPwEncryption none
 AuthMySQLSaltField none
 AuthMySQLNoPasswd Off
 AuthMySQLAuthoritative On
 require valid-user
</Directory>

Diese Konfiguration verwendet folgende Tabelle in der Datenbank ”users”:

CREATE TABLE user_info (
  user_name CHAR(30) NOT NULL,
  user_passwd CHAR(20) NOT NULL,
    [ any other fields if needed ]
  PRIMARY KEY (user)
)

Sichern Sie die Datei und testen Sie es mit apachectl configtest; falls kein Fehler angezeigt wird, starten Sie Ihren Server neu mit sudo apachectl restart. Das sollte es gewesen sein. Viel Spass!

Spezifikationen

Hits

1328

© by macjaner.ch | Powered by GoeGG-ArT.ch