Назад | Перейти на главную страницу

Roundcube не может подключиться к базе данных PostgreSQL

Я пытаюсь установить Roundcube на сервере CentOS 5.5 с базой данных PostgreSQL 8.1.22.

Первая страница установщика скрипта, который проверяет наличие php-библиотек и т. Д., Дает мне зеленый OK по всем направлениям. Я даже изо всех сил старался установить дополнительные.

Вторая страница генерирует мне два файла конфигурации (main.inc.php и db.inc.php), которые я вставляю на место.

На третьей странице все идет не так:

Проверьте конфигурацию БД DSN (запись): НЕ ОК (ошибка MDB2: сбой подключения)

Убедитесь, что настроенная база данных существует и что у пользователя есть права записи.

DSN: pgsql: // roundcube: пароль @ localhost / roundcubemail

Информация, которую вы видите там (user roundcube, password password, server localhost и database roundcubemail) верна. База данных roundcubemail принадлежит пользователю roundcube и имеет права на запись.

Я понятия не имею, почему он не может подключиться к этой базе данных. Я управляю им с помощью phpPgAdmin, который работает на том же Apache, на том же сервере!

Обновить
дополнительная информация: в моем файле журнала postgres есть несколько таких:
FATAL: no pg_hba.conf entry for host "127.0.0.1", user "roundcube", database "roundcubemail", SSL off
однако мой файл pg_hba.conf имеет следующее:
# "local" is for Unix domain socket connections only
local all all trust
host all all 127.0.0.1/32 trust

Использование telnet для подключения как к localhost, так и к 127.0.0.1 на порту 5432 работает нормально.

Ответ от DerfK выше неверен. Вы можете использовать PostgreSQL, используя сокет Unix с roundcube, если вы его правильно настроили. В db.inc.php он должен читать:

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

При условии, что вы создали пользователя «roundcube» в pgsql для базы данных «roundcube» с паролем »пароль"В вашем основном postgresql.conf вы должны запретить прослушивание на уровне IP, изменив:

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

Кроме того, и это самая важная часть, вы должны изменить в pg_hba.conf, чтобы добавить эту строку:

local   all         roundcube                        md5

Перезагрузите все, и все будет работать отлично и быстрее, чем при использовании TCP-соединений (поскольку вы избегаете инкапсуляции IP).