web-dev-qa-db-ja.com

RoundcubeはPostgreSQLデータベースに接続できません

PostgreSQL8.1.22データベースを使用してCentOS5.5サーバーにRoundcubeをインストールしようとしています。

Phpライブラリなどの存在をチェックするインストーラースクリプトの最初のページでは、全面的に緑色のOKが表示されます。オプションのものをインストールするのも面倒でした。

2ページ目では、2つの構成ファイル(main.inc.phpとdb.inc.php)を生成します。

3ページ目は物事がうまくいかないところです:

DB構成DSNを確認してください(書き込み):NOT OK(MDB2エラー:接続に失敗しました)

構成されたデータベースが存在し、ユーザーが書き込み権限を持っていることを確認してください

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

そこに表示される情報(ユーザーroundcube、パスワードpassword、サーバー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

Telnetを使用して、ポート5432でlocalhostと127.0.0.1の両方に接続すると正常に機能します。

2

上記のDerfKからの答えは間違っています。 PostgreSQLは、適切に構成されていれば、roundcubeでUnixソケットを使用して使用できます。 db.inc.phpでは、次のようになります。

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

Pgsqlでデータベース「roundcube」の「roundcube」ユーザーをパスワード「password」で作成した場合、メインの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カプセル化を回避するため)。

4
xryl669