質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.49%

postgresqlDBに接続できない

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 20K+

score 87

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
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • javabigineer

    2016/07/25 17:18

    ユーザ名を間違えていたからでした。正常に動作しているようです。

    キャンセル

  • javabigineer

    2016/07/25 17:19

    対象DBに対してjava以外の接続実績はありません。

    キャンセル

  • takyafumin

    2016/07/25 17:35

    回答にも記載させて頂きましたが、切り分けとしてpsqlなどで接続できるかことをまず確認しましょう。javaソースが間違っているのか、postgresqlの設定に間違いがあるのか分からなくなってしまいますので。

    キャンセル

回答 2

0

javaから接続するのに必要な、ipアドレス、ユーザーid、パスワード、ポート番号などの条件が適切じゃないから接続できなかったんだろうと推察されます。
まずはpsqlというコマンドラインツールから接続してDBの動作状態を把握し、Windowsファイアウォールなどで遮断されていないかを確認の上、諸設定調整してみてください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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の設定を参考に追記して接続検証してみてください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/08/04 10:57

    >IPアドレス(localhostの)とは、127.0.0.1ではなく、192.168.x.xのような指定でしょ>うか。
    >その場合は192.168.x.xに対応する接続許可設定をpg_hba.confに追加する必要があり>ます
    ⇒localhostのIPアドレスを32ビット(/32)登録しました。
     =pg_hba.confに192.168.x.xのようなIPアドレスを追記した(32bit指定で)という意味です。

    キャンセル

  • 2016/08/04 21:24

    最新の状態の「pg_hba.conf」を質問文に追記できますか?

    キャンセル

  • 2016/08/04 22:06

    以下ページを参考に、エラーメッセージの文字化けを解消してエラーメッセージを質問に追記できますでしょうか?
    http://blogs.yahoo.co.jp/dk521123/33325738.html
    ---
    [1] 「postgresql.conf」をテキストエディタで開く

    => デフォルトのファイルパス「C:\Program Files\PostgreSQL\9.3\data\postgresql.conf」

    [2] 「c_messages = 'Japanese_Japan.932'」をコメントアウトし、
    その後に「lc_messages = 'C'」を追加する

    [3] PostgreSQL を再起動する

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る