IP 192.168.1.10でローカルサーバー(Ubuntu)にPostgreSQLをインストールしました。今、私はpgAdminでIP 192.168.1.11を使用してクライアントマシン(Ubuntu)からデータベースにアクセスしようとしています。
クライアントが接続できるようにするには、postgresql.confとpg_hba.confを変更する必要があることを知っています。案内してもらえますか?
実際には、pgAdmin3を介してPostgreSQLサーバーにリモート接続するのは3ステップのプロセスです。
注:Ubuntu 11.04およびPostgreSQL 8.4を使用します。
デフォルトの設定ではループバックインターフェイス上の接続のみをリッスンできるため、PostgreSQLはリモート着信TCP接続をリッスンする必要があります。サーバーにリモートでアクセスできるようにするには、次の行を追加する必要がありますファイルに/etc/postgresql/8.4/main/postgresql.conf:
listen_addresses = '*'
PostgreSQLはデフォルトで、リモートアドレスから受信するすべての接続を拒否します。この行を/etc/postgresql/8.4/main/pg_hba.conf:
に追加して、これらのルールを緩和する必要があります
すべて0.0.0.0/0 md5をすべてホスト
これは、有効なパスワード(md5キーワード)を提供できる場合に誰でも任意のアドレスからログインできるようにするアクセス制御ルールです。 0.0.0.0/0の代わりに、必要なnetwork/maskを使用できます。
これらの変更を構成ファイルに適用したら、PostgreSQLサーバーを再起動する必要があります。ユーザー名とパスワードを使用して、サーバーにリモートでログインできるようになりました。
PostgreSQL 8以降を使用している場合は、listen_addresses
の/etc/postgresql/8.4/main/postgresql.conf
設定を変更する必要があります。
行を追加してみてください:
listen_addresses = *
これにより、すべてのネットワークインターフェースで接続をリッスンするようにPostgreSQLに指示します。
明示的に設定されていない場合、この設定はlocalhost
にデフォルト設定されます。これは、同じマシンからの接続のみを受け入れることを意味します。
Prostgresql.confファイルを変更する必要はありませんでしたが、コマンドライン経由でpsqlが接続されており、pgAdminがRDS on AWSに接続していないため、次の操作を行う必要がありました。
RDSをPublicly Accessibleに設定しました。 ACLとセキュリティグループが広く開かれていて問題があることを確認したので、次のことを行いました:Sudo find . -name *.conf
その後Sudo nano ./data/pg_hba.conf
pg_hba.confファイルのディレクティブの先頭に追加Host all all 0.0.0.0/0 md5
とpgAdminが自動的にログインしました。
これはpg_hba.confファイルでも機能しましたHost all all md5
IPアドレスなしで、これも私のIPアドレスで機能しましたHost all all <myip>/32 md5
サイドノートとして、私のRDSはデフォルトのVPCにありました。デフォルトVPCと同じセキュリティグループ、ACL、セキュリティグループ設定を持つデフォルト以外のVPCに同じRDSインスタンスがあり、動作させることができませんでした。理由はわかりませんが、それは別の日です。
Redhat Linuxの場合
Sudo vi /var/lib/pgsql9/data/postgresql.conf
pgsql9はインストールされたpostgresバージョンのフォルダーです。他のバージョンとは異なる場合があります
listen_addresses = 'localhost'からlisten_addresses = '*'を変更してから、
Sudo /etc/init.d/postgresql stop
Sudo /etc/init.d/postgresql start
ファイアウォールを確認してください。無効にすると、接続できます。ファイアウォールを無効にしたい/できない場合は、リモート接続のルールを追加します。