Roundcube não consegue se conectar ao banco de dados PostgreSQL

Roundcube não consegue se conectar ao banco de dados PostgreSQL

Estou tentando instalar o Roundcube em um servidor CentOS 5.5, com 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 todos os aspectos. Até me esforcei 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:

Verifique o DSN de configuração do banco de dados (gravação): NÃO OK (erro MDB2: falha na conexão)

Certifique-se de que o banco de dados configurado exista e que o usuário tenha privilégios de gravação

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

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

Não tenho ideia de por que ele não consegue se conectar a esse banco de dados. Estou gerenciando com o phpPgAdmin, que está rodando no mesmo Apache, no mesmo servidor!

atualizar
mais algumas informações: meu arquivo de log postgres tem vários destes:
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 tem isto:
# "local" is for Unix domain socket connections only
local all all trust
host all all 127.0.0.1/32 trust

Usar o telnet para conectar-se ao host local e ao 127.0.0.1 na porta 5432 funciona bem.

Responder1

A resposta do DerfK acima está errada. Você pode usar o PostgreSQL usando o soquete Unix com roundcube, desde que esteja bem configurado. No db.inc.php, deve ler-se:

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

Desde que você tenha criado um usuário “roundcube” no pgsql para o banco de dados “roundcube” com senha “senha"Em seu postgresql.conf principal, você deve evitar a escuta 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 pg_hba.conf para adicionar esta linha:

local   all         roundcube                        md5

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

informação relacionada