Apache2 аутентификация с mod_authn_dbd и MySQL
Следуя этому руководству, я попытался настроить свой сервер Debian 8 с Apache 2.4.10 и MySQL 5.5.50 для использования MySQL в качестве бэкэнда аутентификации для моего SVN. Я получаю внутреннюю ошибку сервера и не могу понять, почему.
Сначала я добавил файл /etc/apache2/conf-available/dbd_mysql.conf, содержащий
<IfModule mod_dbd.c>
DBDriver mysql
DBDParams "host=localhost user=THEUSER pass=THEPASS"
DBDMin 2
DBDKeep 4
DBDMax 10
DBDExptime 300
</IfModule>
конечно с последующим
a2enconfig dbd_mysql
Я установил базу данных MySQL "authdb", содержащую таблицу "mysql_auth" с двумя важными столбцами: "имя пользователя" и "пароль". Конкретная база данных доступна пользователю, который я назову "THEUSER" с разрешением SELECT.
Затем я добавил конфигурацию для конкретного сайта в /etc/apache2/site-available/svn.conf:
DBDParams "dbname=authdb"
<Location /svn/private/>
DAV svn
SVNParentPath /svn/private/
AuthzSVNAccessFile /svn/auth/accesslist_private
SSLRequireSSL
AuthUserFile /dev/null
AuthName "SVN"
AuthType Basic
<IfModule mod_authn_dbd.c>
AuthBasicProvider dbd
AuthDBDUserPWQuery "SELECT password FROM mysql_auth WHERE username = %s"
Require valid-user
</IfModule>
</Location>
Эта конфигурация сайта уже включена, поэтому я перезапустил Apache и нашел в файле журнала что-то, чего совершенно не понимаю:
[dbd:error] [pid 15225] (20014)Internal error: AH00629: Can't connect to mysql: Access denied for user 'A LOCAL SYSTEM USER'@'localhost' (using password: NO)
[dbd:error] [pid 15225] (20014)Internal error: AH00633: failed to initialise
[authn_dbd:error] [pid 15225] [client XX.XX.XX.XX:XYZ] AH01653: Failed to acquire database connection to look up user 'some_user'
Эта ошибка повторяется всякий раз, когда я пытаюсь получить доступ к своему репозиторию SVN.
Что действительно странно, так это то, что в файле журнала есть пользователь, которого я совершенно не ожидаю найти здесь. Это системный пользователь, который не имеет ничего общего ни с MySQL, ни с Apache. Этот пользователь используется только для входа по SSH. Какой момент я упускаю? Любая помощь будет оценена!
1 ответ
Наконец-то разобрался с проблемой. Очевидно, что содержимое моего файла конфигурации было загружено после содержимого определения моего сайта.
Решение было следующим: я переместил содержимое из dbd_mysql.conf прямо перед -Definition моего /etc/apache2/site-available/svn.conf, отключил conf, перезагрузил Apache и все заработало.
Чего я еще не понял, так это того, что моя конфигурация неверна, потому что я ожидал, что конфигурация загружается до определения моего сайта, которое опирается на предыдущую конфигурацию.