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 и все заработало.

Чего я еще не понял, так это того, что моя конфигурация неверна, потому что я ожидал, что конфигурация загружается до определения моего сайта, которое опирается на предыдущую конфигурацию.

Другие вопросы по тегам