実際、私はpgpool2とdockerコンテナを使用してpostgresレプリケーションシステムを作成しようとしています。 postgresを実行する2つのコンテナとpgpool2用の別のコンテナを作成しました。したがって、PHPスクリプトを介してpgpool2サーバーに接続しようとすると、次のエラーが発生します。
pg_connect(): PostgreSQL サーバーに接続できません。サーバーに接続できません。接続が拒否されました。
答え1
私は関係がありません。ルーストアバウト以前は…しかし…
ほとんどのデフォルト設定では、postgresqlはローカル以外の接続を許可しません。リモート接続を許可するには、pg_hba.confファイルに「host」行を追加する必要があります。
通常、このファイルは次のような場所にあります。
/etc/postgresql/9.6/main/pg_hba.conf
このような:
#TYPE DATABASE USER ADDRESS AUTH METHOD
host database1 user1 192.168.1.0/24 md5
次に、/etc/init.d/postgresql restartまたはオペレーティングシステムに適した方法でpostgresqlクラスタを再起動します。
以下を使用して、リモートホストの開いているポートを表示できるはずです。
netstat -l
正しい場合は、アドレスを 'localhost'から0.0.0.0に変更する必要があります。
また、「user1」をpostgresqlユーザーとしてパスワードと共に追加し、そのユーザーが使用するデータベースを作成する必要があります。
postgresqlスーパーユーザーになり、これを行うことができます。
sudo -s
#su postgres
postgres@host$ createuser user1 -P
enter in a password
postgres@host$ createdb database1 -O user1
これにより、次のローカルコマンドを使用してリモートpostgresqlクラスタに接続できます。
psql -h remote.host.address -U user1 -d database1
もちろん、すべてのIPアドレスは一例です。適切に変更してください。