apache DBD não conectando ao MySQL

1

Eu uso mod_dbd e mod_authn_dbd para proteger o acesso aos meus sites. Mas parece ser instável, poucos minutos depois de reiniciar o apache e algumas requisições feitas, a autenticação não funciona mais com esta mensagem no log de erros do apache:

[authn_dbd:error] [pid 21308] [client xxxxx] AH01656: Query execution error looking up 'mylogin' in database []

Edite o log do apache com mais detalhes:

[authz_core:debug] [pid 9307] mod_authz_core.c(809): [client x.x.x.x] AH01626: authorization result of Require dbd-group mygroup: denied (no authenticated user yet)
[authn_dbd:error] [pid 9307] [client x.x.x.x] AH01656: Query execution error looking up 'mylogin' in database []
[core:trace3] [pid 9307] request.c(119): [client x.x.x.x] auth phase 'check user' gave status 500: /private

e no log de erro do mysql:

[Note] Aborted connection 5000 to db: 'httpauthdb' user: 'httpauth' host: 'xxx.xxx.xxx.xxx' (Got an error reading communication packets)

Eu tenho que reiniciar o apache para que ele funcione, mas não por muito tempo. Descobri que definir DBDPersist (em dbd conf) como Off resolve meu problema, mas não é recomendado fazer isso de acordo com a documentação do apache.

Editar : Consultar o mesmo banco de dados com o cliente mysql funciona, mesmo depois de ocorrer um erro.

Aqui um pedaço de configuração em um vhost:

<Location /private>
  AuthName 'My private space'
  AuthType Basic
  AuthBasicProvider dbd
  AuthDBDUserPWQuery "SELECT password FROM clients WHERE username = %s"
  AuthzDBDQuery "SELECT groups FROM clients WHERE username = %s"
  Require dbd-group mygroup
</Location>

Aqui meu dbd_mysql.conf carregado pelo apache

DBDriver mysql
DBDParams "sock=/var/run/mysqld/mysqld.sock,user=httpauth,dbname=httpauthdb,pass=xxxxxxxx"
DBDMin  4
DBDKeep 2
DBDMax  10
DBDExptime 300
DBDPersist On

O resultado do apachectl -V:

Server version: Apache/2.4.25 (Debian)
Server built:   2017-01-25T22:59:26
Server's Module Magic Number: 20120211:67
Server loaded:  APR 1.5.1, APR-UTIL 1.5.4
Compiled using: APR 1.5.2, APR-UTIL 1.5.4
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/etc/apache2"
 -D SUEXEC_BIN="/usr/lib/apache2/suexec"
 -D DEFAULT_PIDLOG="/var/run/apache2.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="mime.types"
 -D SERVER_CONFIG_FILE="apache2.conf"

e versão do mysql:

mysql  Ver 14.14 Distrib 5.7.17-13, for debian-linux-gnu (x86_64) using  6.3

Alguma idéia sobre a origem do problema?

    
por Thomas L. 18.09.2017 / 17:42

0 respostas