通过mod_authn_dbd使用MySQL的Apache身份验证失败

我试图使用基本身份验证限制对目录的访问,用户:密码存储在
mysql数据库中.在启用mod_authn_dbd启动Apache服务后,它会创建大约60到70个
MySQL进程,所有这些进程都有“睡眠”命令.但是,这些错误会出现在整个Apache日志中,并且由于此错误,身份验证会间歇性地失败:

[Mon Aug 19 21:38:15 2013] [error] (20014)Internal error: DBD: failed to initialise
[Mon Aug 19 21:38:15 2013] [crit] (20014)Internal error: DBD: child init failed!
[Mon Aug 19 21:38:15 2013] [error] (20014)Internal error: DBD: Can't connect to mysql

我已经尝试调整MySQL连接限制和DBD参数来解决这个问题,但没有成功.

这是我当前的配置,删除了敏感信息:

<IfModule mod_authn_dbd.c>
  DBDriver mysql
  DBDParams "host=localhost port=3306 dbname=SITE_USERS user=DBUSER pass=DBPASS"
  DBDExptime 300
  DBDMin 1
  DBDMax 10
</IfModule>

<Directory "/home/mysite/public_html/protected">
  AuthCookieName CookieAuth
  AuthCookieBase64 On
  AuthType Basic
  AuthName "Registered User"
  AuthBasicProvider dbd
  AuthDBDUserPWQuery "SELECT password FROM users WHERE username = %s"
  Require valid-user
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>

最佳答案 好像你正在遇到
Bug #45995 mod_authn_dbd conflict with php+mysql.

related post中所述,这是由apache apr-util mysql驱动程序和php mysql驱动程序之间的冲突引起的.如果你不使用它,你可以卸载php-mysql,或者你可以卸载它,你可以将apr和apr-util降级到1.3或更低版本.

点赞