UbuntuマシンでPostgreSQLデータベースをセットアップしようとしています。リモートマシンからpgAdmin3を使用してアクセスできるようにしたいと思います。これをどのように設定しますか?
私はPostgreSQLデータベースをUbuntuにインストールしました:
Sudo apt-get install postgresql
私の/etc/postgresql/9.1/main/pg_hba.conf
私にこの行があります:
Host all all all password
そのため、すべてのIPv4アドレスからの接続を受け入れ、パスワードはクリアテキストで送信する必要があります(これは開発上の理由によるものです)。
このコマンドを実行して、実行中のサービスを確認すると、次のようになります。
Sudo netstat -tulpn
これらの行を見ると、PostgreSQLがデフォルトのポートで接続を受け入れていることがわかります。
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
3561/postgres
同じローカルネットワーク上のリモートコンピューターからこのPostgreSQLサーバーに接続しようとすると、次のエラーメッセージが表示されます。
サーバーはリッスンしません
サーバーが接続を受け入れない:接続ライブラリレポート
サーバーに接続できませんでした:接続が拒否されましたサーバーはホスト "10.0.1.7"で実行されており、ポート5432でTCP/IP接続を受け入れていますか?
ユーザー名としてpostgres
を使用し、パスワードは使用しませんでした。しかし、私はpostgres
をパスワードとして試してみました。ローカルサーバーで、次を使用してログインできます。
Sudo -u postgres psql postgres
PgAdmin3を使用して、リモートマシンからUbuntuで実行されているPostgreSQLデータベースに接続するにはどうすればよいですか?
Netstatレポートの行は、データベースがlocalhost:5432(127.0.0.1)でのみ受信TCP接続をリッスンしていることを示しています。
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 3561/postgres
そのため、pg_hba.confで指定した権限に関係なく、ローカルtcp接続のみを受け入れることができます。 pg_hba.confは許可された接続のみを指定しますが、サービスがリッスンするインターフェースは指定しません。
サーバーがリッスンするアドレスは listen_addresses GUC in postgresql.conf で指定されます。サーバーでリモート接続をリッスンする場合は、リッスンするIPを指定するか、*
を使用してホストで利用可能なすべてのインターフェースをリッスンする必要があります。
Postgresqlサーバーがホスト上のすべてのインターフェースでリッスンするようにするには、postgresql.confに次の行が必要です。
listen_addresses = '*'