MySQL - один из самых популярных источников данных. Используют его практически во всех задачах. Авторизация пользователей тоже одна из задач, которые так любят водружать на плечи MySQL.
MySQL – один из самых популярных источников данных. Используют его
практически во всех задачах. Авторизация пользователей тоже одна из
задач, которые так любят водружать на плечи MySQL. Для того, что бы
сервер мог авторизовать пользователей через базу MySQL нужно установить
дополнительные модули. В портах FreeBSD есть два порта mod_auth_mysql –
под Apache 1.3 и mod_auth_mysql под Apache 2.X. Поскольку у меня стоит
Apache 2.2, то я буду рассказывать об установке пората
/usr/ports/www/mod_auth_mysql2. Насколько я знаю, под Apache 1.3
установка отличается незначительно, только в настройках, отвечающих за
загрузку модулей.
Итак, начнем c установки mod_auth_mysql2:
cd/usr/ports/mod_auth_mysql2 makeinstall clean
Установка проходит без «дополнительных» вопросов. И после того, как она закончится, подправим httpd.conf
Для этого открываем /usr/local/etc/httpd.conf и находим такую строку:
и расскоментируем ее(убираем решетку).
Теперь создадим базу и таблицу по которой будет авторизоваться
пользователь. Если база есть, то можно пропустить процесс ее создания и
процесс создания пользователя.
Создаем базу:
mysql -uroot -p CREATEDATABASE apache
Создаем пользователя с правами чтения из базы. Писать в эту базу будем из командной строки от рута.
mysql -uroot-p apache </usr/local/share/doc/mod_auth_mysql/htpasswd.sql
С таблицами разобрались.
Первым делом добавим хост в базу mysql, для которого мы организовываем авторизацию:
INSERTINTO host_info SET host='hilik.org.ua',
host_group=1;
Опредилили принадлежность хоста hilik.org.ua к группе 1.
Теперь добавим пользователей.
Добавим пользователя hilik с паролем hilik-123, который может
авторизоваться для хостов из первой группы, для этого выполним такой
запрос:
INSERTINTO user_info SET user_name='hilik',
user_passwd=encrypt('hilik-123'), host_group=1;
Теперь остается создать .htaccess файл и поместить его в ту директорию, доступ к которой вы хотите ограничить.
Содержимое .htaccess такое:
Опции AuthBasicAuthoritative Off и AuthUserFile /dev/null нужны для
того, что бы отключить авторизацию по файлу(htpasswd). Если мы не
пропишем эти опции, то получим:
(9)Bad file descriptor: Could not open password file: (null)
Работать соответственно ничего не будет. А у нас настройка
закончена, можно пользоваться. Осталось добавить, что система
mod_auth_mysql достаточно гибок и позволяет указать другие поля таблицы
для авторизации. То есть можно подогнать авторизацию под свою, текущую
таблицу.
Буду рад комментариям, постараюсь ответить на вопросы. Заходите на сайт http://www.hilik.org.ua/