【Linux】【PostgreSQL】 ホストOSの pgAdmin III からゲストOS / Debian のPostgreSQLにアクセスできるようにする

ホストOSの pgAdmin III からゲストOSのPostgreSQLにアクセスできるようにする

前提条件

 * 以下の関連記事にある設定を行っている事
http://blogs.yahoo.co.jp/dk521123/33895644.html

■ ゲストOS / PostgreSQL側の設定

1) ホストOSとゲストOSのIPアドレスを調べる(ipconfig/ifconfigで)
   # ホストOSとゲストOSで、お互いに対して、ping で通信の疎通を確認しておくといい。

2) 各種設定ファイルを修正する

[1] /etc/postgresql/9.1/main/postgresql.conf

【修正前】
#listen_addresses = 'localhost'		# what IP address(es) to listen on;
【修正後】
listen_addresses = '*'		# what IP address(es) to listen on;

# ついでに文字化けも直しておく

【修正前】
lc_messages = 'ja_JP.UTF-8'			# locale for system error message
【修正後】(小文字'c'ではダメ)
lc_messages = 'C'			# locale for system error message

# ポートを変更してもいいが、以下の関連記事を参照のこと
# (今回はデフォルト「5432」のまま)
http://blogs.yahoo.co.jp/dk521123/33585391.html
[2] /etc/postgresql/9.1/main/pg_hba.conf

以下「!!追記!!」を参考に追記する

※ [ホストOSのIPアドレス]/[ホストOSのマスク]は自分の環境に合うように修正

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# host    all             all             [ホストOSのIPアドレス]/[ホストOSのマスク]         trust
host    all             all             192.XXX.XXX.1/24        trust # !!追記!!

※ もし「Access to database denied」が表示されて、うまく繋がらない場合は
  以下を指定して試してみるのも手。

# すべてのクライアントから許可する(以下のURL参照のこと。)
host  all  all 0.0.0.0  0.0.0.0  trust
http://kkkw.hatenablog.jp/entry/20081207/1228626082
3) 以下のコマンドを入力し、PostgreSQL を再起動する

su
#【PostgreSQL再起動】
/etc/init.d/postgresql restart

4) PostgreSQLのポートを開ける(下記はデフォルトのポート「5432」の例)

iptables -I OUTPUT -p tcp --sport 5432 -m state --state ESTABLISHED -j ACCEPT

■ ホストOS / pgAdmin III側の設定

[1] PostgreSQL をインストールする(下記の関連記事を参照のこと)
http://blogs.yahoo.co.jp/dk521123/33153278.html
[2] pgAdminIIIを起動し、[ファイル]-[サーバを追加]を選択
[3] 以下のように設定する

 ■「プロパティ」タブ
 * 名前:(任意) PostgreSQL in Linux
 * ホスト:ゲストOS(PostgreSQL)のIPアドレス
 * Port:PostgreSQLのポート番号(デフォルト:5432)
 * ユーザ名:PostgreSQLのユーザ名(デフォルト:postgres)

 ■「SSH Tunnel」タブ
 * Use SSH Tunneling:チェックを付ける
 * Tunnel Host:ゲストOS(PostgreSQL)のIPアドレス
 * ユーザ名:ゲストOS(Linux)のユーザ名(例えば「root」)
 * Authentification:「パスワード」を選択
 * Password/Passphrase:ゲストOS(Linux)のパスワード(例えば「root」のパスワード)

関連記事

仮想環境の DebianPostgreSQL を設定する

http://blogs.yahoo.co.jp/dk521123/33895644.html