質問: PostgreSQL9.3をWindowsにセットアップしてJava(Eclipse)から接続しようとすると下記のようなエラーが発生しました。 pg_hba.confの中身をtrustに変更しましたが変化ありません。 原因で考えられる要因って足りますでしょうか? org.postgresql.util.PSQLException: FATAL: pg_hba.conf ���z�X�g"IPアドレス"�A���[�U"postgres"�A�f�[�^�x�[�X"postgres, SSL�����p���G���g�������������� Exception in thread "main" java.lang.NullPointerException ``` # TYPE DATABASE USER ADDRESS METHOD # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 md5 # Allow replication connections from localhost, by a user with the # replication privilege. #host replication postgres 127.0.0.1/32 md5 #host replication postgres ::1/128 md5 ```
回答: pg_hba.confの追記ありがとうございます。 ``` # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 md5 ``` 上記により全てのデータベース、全てのユーザでのローカルホストからの接続に関して「trust:パスワードなし」で接続できることとなります。 ※IPv4, IPv6で設定が異なってしまっているのでIPv6側も「trust」としておいてください。 上記が意図したセキュリティ設定であれば、まずはjavaからの接続の前にpgadminやphppgadmin, psqlでの接続が正しく行えることを確認してください。 なお、pg_hba.confの変更後はpostgresqlの再起動を行い、設定ファイルを反映させることをお忘れなく。 また、1点念のため確認ですが、postgresqlが動作しているWindows機と接続クライアント(Javaを動作させようとしている端末)は同一端末ですか? 異なる場合は、postgresqlに外部ホストからの接続設定を追加する必要があります。 ### コメントを受けての追記#1 > > psqlからの接続は可能です。 > > > 確認ありがとうございます。postgresqlは正常に動作しているようですね。 > > IPアドレスをlocalhostで設定すれば正常に動作しますが、IPアドレス(localhostの)を入力するとエラーになります。 > > > どの方法で接続した場合のことをおっしゃっていますか?jdbc接続でしょうか? エラーになるとは、どのような状態になるのでしょうか?最初の質問と同じエラーメッセージが出力される事となりますでしょうか? > > 接続はpostgresqlが動作しているWindows機とクライアントは同一です。 > > > 回答ありがとうございます。承知致しました。 また、`pg_hba.conf`は前回と変更していない状態でしょうか。 localhostからの接続時、IPv4とIPv6での認証方式が異なっているので統一しておいた方が問題が少なくなると思います。 あわせて、`ping localhost`とした時、ipアドレスとしてIPv4とIPv6のどちらが返ってくるか確認できますでしょうか? コメントを受けての追記#2 > > localhostのIPアドレスを32ビット(/32)登録しました。 > > > これは何にどういった意図で行った作業でしょうか? > > IPアドレスをlocalhostで設定すれば正常に動作しますが、IPアドレス(localhostの)を入力するとエラーになります。 > > > IPアドレス(localhostの)とは、`127.0.0.1`ではなく、`192.168.x.x`のような指定でしょうか。 その場合は`192.168.x.x`に対応する接続許可設定をpg_hba.confに追加する必要があります。 localhostの設定を参考に追記して接続検証してみてください。