LoadModule mysql_auth_module modules/mod_auth_mysql.so
<Directory /var/www/protected/dir/>
AuthName "MySQL authenticated zone"
AuthType Basic
AuthMYSQLEnable on
AuthMySQLHost my.db.ho.st
AuthMySQLUser apache
AuthMySQLPassword PaSsW0Rd
AuthMySQLDB mybilldb
AuthMySQLUserTable paysys
AuthMySQLPwEncryption scrambled
require valid-user
<Directory>
Наиболее интересна тут опция AuthMySQLPwEncryption - она задает метод шифрования паролей в базе. Значение scrambled как раз означает результат работы MySQL-функции PASSWORD() (причем поддерживаются как старый 16-символьный формат, так и новый 41-символьный). Еще возможные значения: none, crypt, md5, aes и sha1.
И последнее. mod_auth_mysql не поддерживает проверку логинов/паролей произвольным запросом к БД (как это разрешается, например, во freeradius) - нужно обязательно иметь таблицу с именем, указанным в AuthMySQLUserTable, содержащую поля user_name (AuthMySQLNameField по умолчанию) и user_password (AuthMySQLPasswordField по умолчанию). Можно указать еще условие WHERE в опции AuthMySQLUserCondition, но лично мне более гибким кажется путь создания в базе представления:
$ mysql -u root mybilldb -p
mysql> create view paysys as select login as user_name, pass as user_password from managers where payments > 0 and archive = 0 and template = 0;
mysql> grant select on mybilldb.paysys to 'apache'@'my.apache.ho.st' identified by 'PaSsW0Rd';



