web-dev-qa-db-ja.com

pgadminからエラーが表示されます:パスワードが指定されていません

Linux(kubuntu)およびpgadmin3の最新バージョンにpostgresql 9.2をインストールしましたが、それらを接続すると次のエラーが発生します。

エラーが発生しました:サーバーへの接続エラー:fe_sendauth:パスワードが指定されていません

私に何ができる?

また、JavaでWebアプリケーション用にTomcatを構成しました。実際、私のアプリケーションを試す前にpostgresqlは機能していました。

18
DarkCoffee

パスワードが必要かどうかは、 pg_hba.conf 。接続にはさまざまな方法があります-pg_hba.confの異なる設定が適用される場合があります。

接続(「サーバー」)設定の「ホスト」フィールドについて、pgAdmin 3に付属のヘルプを引用します。

ホストは、接続するマシンのIPアドレス、または完全修飾ドメイン名です。 Unixベースのシステムでは、アドレスフィールドを空白のままにして、ローカルマシンでデフォルトのPostgreSQL Unixドメインソケットを使用するか、PostgreSQLソケットを含む代替パスに設定できます。パスを入力する場合、「/」で始まる必要があります。ポート番号も指定できます。

Unixソケットを介して接続する場合、「ローカル」の規則が適用されます。一方、TCP/IP経由で接続する場合は「ホスト」(または「hostssl」)ルールが適用されます。

Pg_hba.confファイルの先頭に次のような行がある場合:

local    all     all     peer

または:

local    all     all     ident

..その後、システムユーザーが「postgres」で、データベースユーザーも「postgres」の場合、パスワードなしでローカルに接続できます。

12

私はこれが何年も前の質問であることを知っていますが、今日この同じ問題にぶつかり、trustを限定的で便利な方法で使用する解決策があります。

多くの開発店と同様に、開発者がQA postgresパスワードを必要とするとき、彼らはただそれを叫び、メッセージを送り、電子メールで送信し、額にそれを書きます。そして、私は「これは本当に悪い。ここでPKIを使用する方法を探します。」 pgAdmin3も使用します。

まず、pg_hba.confに次のような行を追加します。devは、ショップの開発者のユーザーを表します。

Host all dev 127.0.0.1/32 trust

データベースサーバーのauthorized_keysフォルダーに開発者の公開キーをドロップします。次のようなコマンドを使用して、-Lフラグを使用してサーバーにsshを実行します。

ssh -i ~/.ssh/id_rsa -L5432:127.0.0.1:5432 -vvv 101.102.103.104

これにより、postgresポートをlocalhostのように使用できます。もちろん、キー、サーバーを交換し、ローカルで開いているポートにマップしてください(ローカルのpostgresを実行している場合、おそらく5432にバインドされています)。かなり冗長なフラグを使用しているため、sshの問題を簡単にトラブルシューティングできます。

別のターミナルを開き、次のコマンドを発行します。

psql -h 127.0.0.1 -U dev -p 5432

データベースにアクセスする必要がありますが、パスワードの入力を求められることはありません。そうしないと、開発者はセキュリティをほとんど考慮せずにパスワードを放棄し、ハロウィーンのキャンディのようにそれを渡すからです。

現在のところ、PgAdmin3はパスワードを要求するプロンプトを表示しますが、たとえそれが-普通のように-あなたはそれを必要としません。しかし、他のpostgres GUIはそうではありません。 Posticoをお試しください。ベータ版ですが、うまく機能します。

この回答が、パスワードを自由に共有するのではなく、postgresの認証にPKIを使用したい人の助けになることを願っています。

6
bbuckley123

最近、この問題に遭遇しました。

ローカルマシンでPostgreSQLを使用しており、psqlがロギングを必要とせずに動作する場合、pgadmin3のメニューFile - Add Server - Properties tabを試して、この接続のNameフィールドに入力し、HostフィールドとPasswordフィールドが空の状態で、okをクリックします。

from pgadmin docs

Unixベースのシステムでは、アドレスフィールドを空白のままにして、ローカルマシンでデフォルトのPostgreSQL Unixドメインソケットを使用するか、PostgreSQLソケットを含む代替パスに設定できます。パスを入力する場合は、「/」で始まる必要があります。

pg_hba.confに触れることなく、Debianテスト(pgadmin3 1.22、PostgreSQL 11)に取り組みました。

0
zhazha