Roundcube가 PostgreSQL 데이터베이스에 연결할 수 없습니다.

Roundcube가 PostgreSQL 데이터베이스에 연결할 수 없습니다.

PostgreSQL 8.1.22 데이터베이스가 있는 CentOS 5.5 서버에 Roundcube를 설치하려고 합니다.

PHP 라이브러리 등이 있는지 확인하는 설치 프로그램 스크립트의 첫 번째 페이지는 전반적으로 녹색 확인을 제공합니다. 옵션을 설치하려고 노력도 했습니다.

두 번째 페이지에서는 내가 배치한 두 개의 구성 파일(main.inc.php 및 db.inc.php)을 생성합니다.

세 번째 페이지에서는 문제가 발생합니다.

DB 구성 DSN 확인(쓰기): OK(MDB2 오류: 연결 실패)

구성된 데이터베이스가 존재하고 사용자에게 쓰기 권한이 있는지 확인하십시오.

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

거기에 표시되는 정보(사용자 roundcube, 비밀번호 비밀번호, 서버 localhost 및 데이터베이스 roundcubemail)는 모두 정확합니다. 데이터베이스 roundcubemail은 사용자 roundcube에 속하며 쓰기 권한을 갖습니다.

왜 해당 데이터베이스에 연결할 수 없는지 전혀 모르겠습니다. 저는 동일한 서버, 동일한 Apache에서 실행되는 phpPgAdmin을 사용하여 관리하고 있습니다!

업데이트
추가 정보: 내 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

텔넷을 사용하여 포트 5432에서 localhost와 127.0.0.1에 모두 연결하면 제대로 작동합니다.

답변1

위 DerfK의 답변이 잘못되었습니다. 잘 구성했다면 Roundcube와 함께 Unix 소켓을 사용하여 PostgreSQL을 사용할 수 있습니다. db.inc.php에서 다음과 같아야 합니다:

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

pgsql에서 "roundcube" 데이터베이스에 대해 "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 캡슐화를 피하므로).

관련 정보