PgAdmin III-パスワードが空のときにデータベースに接続する方法


21

PCにPostgreSQL 9.1をインストールしました(Win 7)。とで正常に接続する小さなJavaアプリケーションがlogin=saありpassword=""ます。接続が機能します。

ただし、PgAdmin III自体からは拒否されます。私は得る:

Error connecting to the server: fe_sendauth: no password supplied

空のパスワードでPgAdmin IIIからデータベースに接続するにはどうすればよいですか?

編集

これは単なるテストであり、量産コードではありません。


確かにわかりませんが、PgAdminがそれをサポートしていないことは容易に想像できます。
ピーターアイゼントラウト

JavaアプリはpgAdminと同じクライアント上にありますか?
ジャックダグラス

回答:


10

のようなスーパーユーザーを含むすべてのユーザーのパスワードなしで、pgAdmin IIIからpostgresインスタンスに接続できますpostgres

別のクライアントから正常に接続しているため、同じワークステーション上にある場合、pgAdminから接続できない理由はありません-クライアント自体の何らかのファイアウォールルールが1つのプログラムを許可し、別のプログラムを許可しない限り。

問題がこのクライアントに固有の場合、次の1つ以上を変更する必要がある場合があります。

  • pg_hba.conf
ホストsaすべて192.168.0.nnn / 32信頼
  • postgresql.conf
listen_addresses = '*'
  • postgresサーバーのファイアウォール、たとえばiptables:
-A INPUT -s 192.168.0.nnn -m state --state NEW -j ACCEPT

しかし、私はこれのいずれもしないことをお勧めします。マニュアルには、正当な理由で次のことが記載されています。

信頼を指定するpg_hba.conf行によってサーバーへの接続が許可されているすべてのマシン上のすべてのユーザーを信頼する場合、信頼認証はTCP / IP接続にのみ適しています。localhost(127.0.0.1)からの接続以外のTCP / IP接続に信頼を使用することはめったにありません。

代わりに、次のいずれかを検討してください。

  • パスワードとmd5 IDを使用する
  • ssh経由のトンネリングポート5432

31

この答えは他の場所で見つけました。

DBがローカルホストにある場合、「localhost」または「127.0.0.1」を使用するのではなく、接続のホストフィールドを空白のままにしてください。これは、TCPではなくローカルUNIXソケットを介して接続するようにPgAdminに指示します。


元の質問はWindowsシステムに関するものであったことを付け加えましょう。
dezso

3
ああ、まさにそれでした。ホストを空白のままにしておきました。
基本

このフィールドを空白のままにすることはできません。必須です。
アスラン

ホストフィールドを空白のままにしておくと、pgにシステムユーザー名(Linuxの場合)という名前のロールがある場合にのみ機能するようです。そうでなければ、ユーザーマップが必要だと思います。
a1an

パーフェクト!postgresqlとpgadminの新規インストールで、この行ではなく- に変更pg_hba.confし、pgadminでホストとパスワードのフィールドを空白のままにすると、すべてが機能します!pgadminが、この難しいUIの代わりにソケットに切り替えるためのチェックボックスを追加することを望みます。trustpeerlocal all postgres trust
アヌパムジェイン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.