Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

MySQL - один из самых популярных источников данных. Используют его практически во всех задачах. Авторизация пользователей тоже одна из задач, которые так любят водружать на плечи MySQL.


Новые статьи на сайте:

 

Hilik     Настроим все

 http://www.hilik.org.ua/

 

 Apache. Установка и настройка mod_auth_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
make install clean

Установка проходит без «дополнительных» вопросов. И после того, как она закончится, подправим httpd.conf
Для этого открываем /usr/local/etc/httpd.conf и находим такую строку:

#LoadModule auth_mysql_module  libexec/apache22/mod_auth_mysql.so

и расскоментируем ее(убираем решетку).
Теперь создадим базу и таблицу по которой будет авторизоваться пользователь. Если база есть, то можно пропустить процесс ее создания и процесс создания пользователя.
Создаем базу:

mysql -uroot -p
CREATE DATABASE apache

Создаем пользователя с правами чтения из базы. Писать в эту базу будем из командной строки от рута.

GRANT SELECT ON apache.* TO 'apache'@'localhost' IDENTIFIED BY 'apache-123';

Теперь создадим таблицы:

mysql -uroot -p apache </usr/local/share/doc/mod_auth_mysql/htpasswd.sql

С таблицами разобрались.
Первым делом добавим хост в базу mysql, для которого мы организовываем авторизацию:

INSERT INTO host_info SET host='hilik.org.ua',
host_group=1;

Опредилили принадлежность хоста hilik.org.ua к группе 1.
Теперь добавим пользователей.
Добавим пользователя hilik с паролем hilik-123, который может авторизоваться для хостов из первой группы, для этого выполним такой запрос:

INSERT INTO user_info SET user_name='hilik',
user_passwd=encrypt('hilik-123'), host_group=1;

Теперь остается создать .htaccess файл и поместить его в ту директорию, доступ к которой вы хотите ограничить.
Содержимое .htaccess такое:

 AuthName "Auth pls "
AuthType Basic
AuthMySQLHost localhost
AuthMySQLDB apache
AuthMySQLUserTable user_info
AuthMySQLEnable On
AuthMySQLUser apache
AuthMySQLPassword apache-123
AuthBasicAuthoritative Off
AuthUserFile /dev/null
require valid-user

Опции AuthBasicAuthoritative Off и AuthUserFile /dev/null нужны для того, что бы отключить авторизацию по файлу(htpasswd). Если мы не пропишем эти опции, то получим:

(9)Bad file descriptor: Could not open password file: (null)

Работать соответственно ничего не будет. А у нас настройка закончена, можно пользоваться. Осталось добавить, что система mod_auth_mysql достаточно гибок и позволяет указать другие поля таблицы для авторизации. То есть можно подогнать авторизацию под свою, текущую таблицу.

 

 Буду рад комментариям, постараюсь ответить на вопросы. Заходите на сайт http://www.hilik.org.ua/
 


В избранное