[pgsql-jp: 31951] Re: <解決?> pg_hba.conf の権限でDBに接続できたようですが

yoshiyuki fukutome tome @ nekomyu.org
2004年 1月 9日 (金) 14:45:49 JST


On 01/ 9, uty @ fo-isd.dnp.co.jp wrote:
> おはようございます。uchiです。
> 
> ふくとめ様、大場様ありがとうございます。
> 
> 結果から申し上げますと、ふくとめ様のご指摘どおり、
> pg_hba.confに以下の1行を追加することで解決しました。
> 
> <追加した行>
> host   testdb   progres    10.80.160.181 255.255.255.255 trust
> 
> ・pg_hba.confは以下のようになりました。
> # TYPE DATABASE USER    IP-ADDRESS    IP-MASK         METHOD
> #local testdb   testuser2                                reject
> #local testdb2  testuser                                 reject
> local  all      all                                      trust
> # IPv4-style local connections:
> #host  all      all        10.80.160.34  255.255.255.255 trust
> host   testdb   progres    10.80.160.181 255.255.255.255 trust
> host   all      all        127.0.0.1     255.255.255.255 trust
> # IPv6-style local connections:
> host   all      all        ::1   ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff  
>       trust
> 
> 
> >同じホスト(マシン)上に JAVA のプログラム(?)と postmaster が
> >あるのなら、
> 
> >このJavaのプログラムはどのマシンに置いてるんでしょう?
> >10.80.160.181?
> >10.80.160.34?
> 
> javaのプログラムとDBサーバは同じマシンでした。
> (ともに、10.80.160.181)
> 10.80.160.34のPCからtelnetで接続してjava testpg で動かしています。

telnet client (10.80.160.34)
↓(tcp)
telnetd (10.80.168.181)
↓
java (10.80.168.181)
↓(tcp)
postmaster (10.80.168.181)

ってことですね。telnet で他のマシンに接続している時点で
あなたは接続先のホストにいるのです。

> だた、また疑問が出てきたのですが、変更前のpg_hba.confの設定で、
> psqlで接続できました。
> (10.80.160.181のDBサーバに、10.80.160.34のPCからtelnetで入って)
> その場合のいっしょかなと思って、動かしてみたところ、
> 今回のような結果になったので、ご質問出したしだいです。
> 
> そのような場合と(psqlで動かす場合)今回では(javaで動かす場合)は、
> 何が違うのでしょうか?
> 
> 以上、よろしくお願いします。


telnet client (10.80.160.34)
↓(tcp)
telnetd (10.80.168.181)
↓
psql --username postgres testdb (10.80.168.181)
↓(unix domain socket)
postmaster (10.80.168.181)

ということでは。psql から postmaster に unix ドメインソケット
を使って接続しているので

pg_hba.conf: local all all trust

の設定によって接続が許可されている。

同じ環境で、
$ psql --host 10.80.160.181 --username postgres testdb
とすると、tcp を使って接続するので、

pg_hba.conf: host testdb postgres 10.80.168.181 255.255.255.255 trust

の記述があるので、接続に成功するでしょう。

local -> unix domain socket による接続
host  -> TCP/IP による接続

ってことじゃないかと。思うんですけど。いいんでしょうか?
(参照)http://www.postgresql.org/docs/current/static/client-authentication.html
-- 
fukutome yoshiyuki
tome @ nekomyu.org



pgsql-jp メーリングリストの案内