使用mod_authn_dbd和MySQL进行Apache2认证



按照这个方法,我尝试用Apache 2.4.10和MySQL 5.5.50设置我的Debian 8服务器,使用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"基本上有两个重要的列,"用户名"one_answers"密码"。特定的数据库可以由一个用户访问,我将其称为具有SELECT权限的"THEUSER"。

然后我在/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登录。我漏掉了哪一点?任何帮助将不胜感激!

终于把问题弄明白了。显然,我的配置文件的内容是在我的网站定义的内容之后加载的。

解决方案如下:我把dbd_mysql.conf的内容移到-我的/etc/apache2/site-available/svn.conf的定义前面,禁用了conf,重新加载Apache,一切都工作了。

我还没有弄清楚的是,如果我的配置是错误的,因为我本以为配置是在我的网站定义之前加载的,它依赖于以前的配置。

相关内容

  • 没有找到相关文章

最新更新