O Roundcube não pode se conectar ao banco de dados PostgreSQL

2

Estou tentando instalar o Roundcube em um servidor CentOS 5.5, com um banco de dados PostgreSQL 8.1.22.

A primeira página do script do instalador, que verifica a presença de bibliotecas php e outras, me dá OKs verdes em toda a linha. Eu mesmo saí do meu caminho para instalar os opcionais.

A página dois me gera dois arquivos de configuração (main.inc.php e db.inc.php) que eu coloquei em prática.

A página três é onde as coisas dão errado:

Check DB config DSN (write): NOT OK(MDB2 Error: connect failed)

Make sure that the configured database exists and that the user has write privileges

DSN: pgsql://roundcube:password@localhost/roundcubemail

As informações que você vê lá (roundcube do usuário, senha, servidor localhost e banco de dados roundcubemail) estão corretas. O banco de dados roundcubemail pertence ao roundcube do usuário e tem permissões de gravação.

Não tenho ideia do motivo pelo qual não é possível conectar-se a esse banco de dados. Estou gerenciando com o phpPgAdmin, que está rodando no mesmo Apache, no mesmo servidor!

update
mais algumas informações: meu arquivo de log do postgres tem um monte deles:
FATAL: no pg_hba.conf entry for host "127.0.0.1", user "roundcube", database "roundcubemail", SSL off
no entanto, meu arquivo pg_hba.conf possui isto:
# "local" is for Unix domain socket connections only
local all all trust
host all all 127.0.0.1/32 trust

Usar telnet para conectar ao localhost e 127.0.0.1 na porta 5432 funciona bem.

    
por Kenny Rasschaert 22.12.2010 / 21:46

1 resposta

4

A resposta do DerfK acima está errada. Você pode usar o PostgreSQL usando o socket Unix com roundcube, desde que você esteja configurando bem. No db.inc.php, leia:

$rcmail_config['db_dsnw'] = 'pgsql://roundcube:*password*@unix(/tmp)/roundcube';

Desde que você tenha criado um usuário "roundcube" em pgsql para o banco de dados "roundcube" com a senha " password " No seu postgresql.conf principal, você deve evitar escutar na camada IP, alterando:

listen_addresses = ''
unix_socket_directory = '/tmp'
ssl = false  # There's no point in using SSL on a local UNIX socket except wasting CPU

Além disso, e essa é a parte mais importante, você deve alterar em pg_hba.conf para adicionar esta linha:

local   all         roundcube                        md5

Reinicie tudo, e ele está funcionando perfeitamente e mais rápido do que usando conexões TCP (já que você evita todo o encapsulamento IP).

    
por 22.06.2012 / 12:42