使用 mod_authn_dbd 和 MySQL 进行 Apache2 身份验证

Posted

技术标签:

【中文标题】使用 mod_authn_dbd 和 MySQL 进行 Apache2 身份验证【英文标题】:Apache2 authentication with mod_authn_dbd and MySQL 【发布时间】:2016-09-03 20:29:22 【问题描述】:

在this howto 之后,我尝试使用 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”表,其中包含两个重要的列,“用户名”和“密码”。特定数据库可由用户访问,我将其称为具有 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 登录。我错过了哪一点?任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

终于找到问题所在了。显然我的配置文件的内容是在我的站点定义内容之后加载的。

解决方案如下:我将 dbd_mysql.conf 中的内容移到 /etc/apache2/site-available/svn.conf 的 -Definition 前面,禁用 conf,重新加载 Apache,一切正常。

我还没有想到的是,如果我的配置有问题,因为我希望在依赖于以前配置的站点定义之前加载配置。

【讨论】:

以上是关于使用 mod_authn_dbd 和 MySQL 进行 Apache2 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

求教mac使用mysql和MySQL Workbench

mysql使用教程?

mysql的简介和使用

使用Ansible安装MySQL

mysql必知必会--MySQL简介

将 Mysql 与 Nodejs 和 Express 一起使用 (node-mysql)