Postgresパスワード認証が失敗する


36

Ubuntu Server 13.10にPostgreSQL 9.1とpgadmin3をインストールしました。

postgresql.confを次のように構成しました: listen_addresses = '*'

また、ピア接続を変更してph_hba.confを構成しました md5

さらに、次の方法でpostgresのパスワードをリセットします。 sudo password postgres

その後、サービスを再起動しました sudo /etc/init.d/postgresql restart

その後、デフォルトのPostgreSQLテンプレートデータベースに接続しようとしました。

sudo -u postgres psql template1

しかし、次のエラーメッセージでログインに失敗しました。

psql: FATAL:  password authentication failed for user "postgres"

次に、pgadminからログインしようとしましたが、同じエラーが発生しました。

私はそれがパスワードの有効期限のバグかもしれないことをここで読みました PostgreSQLユーザーはパスワードを変更した後にサーバーに接続できません

しかし、psqlでログインできないため、解決できませんでした。誰でもこの問題を解決する方法はありますか?

編集

ph_hbaファイル:

ここに

スクリーンショット:

ここに画像の説明を入力してください


7
あなたがこの投稿のクローンを作成したという事実にとてもイライラしています。私はこれに対する答えを書きましたが、あなたがすでに受け入れられた答えを持っているstackoverflow.comに同じ質問を投稿したことを発見するためだけです。サイト間で回答をコピーして貼り付けないでください。すべての人の時間無駄にし、情報を見つけにくくします。これを行うことを主張する場合は、それらの間にリンクを作成します。
クレイグリンガー14

回答:


66

UNIXユーザー「postgres」のパスワードとデータベースユーザー「postgres」のデータベースパスワードを混同しています。これらは同じではありません。

md5データベースユーザーpostgresのパスワードを設定せずにデータベースユーザーの認証を有効にしたため、ロックアウトされましたpostgres

の先頭に新しい行を追加しpg_hba.confます。

local    postgres     postgres     peer

その後、PostgreSQLを再起動/リロードし、次の操作を行います。

sudo -u postgres psql

結果のプロンプトから:

ALTER USER postgres PASSWORD 'my_postgres_password';

その後、追加した行を削除して、pg_hba.confPgを再起動します。これで、上記で設定したパスワードを使用して、postgresユーザーとしてPostgreSQLに接続できます。

詳細については、ユーザーマニュアルの「クライアント認証」の章のドキュメントをpg_hba.confご覧ください。


1
UBUNTUサーバー16 LTSで新しいpg9.6.6をテストします。...そして、これらすべての「初心者の問題」に驚きました。ソリューションでここに到着します...ステップバイステップを実行します...大きな驚き:動作していません! psql -W postgresql://postgres:postgres@localhost再び同じ生産:「パスワード認証ユーザーに失敗しました『postgresの』 FATAL」
ピーター・クラウスを

解決策:すべての行の信頼が ...働いている
ピーター・クラウス

私はsshを使用しています... md5にすべてを1つずつ戻した後(ローカル、ローカル、ホスト...)、「host all 127.0.0.1/32 trust」行のみが変更できず、「信頼"。それで、新しい質問:なぜですか?
ピータークラウス

pg_hba.confファイルは、システムユーザが所有していますpostgres。私はデータベースユーザーのデータベースパスワードしか知らないので、postgres所有権を変更せずにこのconfファイルを編集するにはどうすればよいですか?
シャイレン

ラインがlocal postgres postgres peer本当に必要なものを教えてくださいpg_hba.conf。それなしですべてがうまく機能します
-MaxCore

3

これを使用して、データベースtemplate1のパスワードを変更してみてください。

$ psql -c "ALTER USER postgres WITH PASSWORD 'yourPassword'" -d template1

同じエラーが発生しましたが、ユーザー「postgres」の代わりにユーザー「root」があります
Shadin 14年

これが役立つ理由を説明できますか?
xliiv

2

pg_hba.confで

# IPv4 local connections:
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
host    all         all         127.0.0.1/32         trust

うまくいかない場合は試してください

host    all         all         your_ip/32         trust

その後、データベースを再起動します。正常に動作します。信頼できる場合、MD5を作成してもパスワードは必要ありません。パスワードを要求します...


3
このアプローチはどこでも使用しないでください。データへのユーザーアクセスを常に制限する必要があります
Most Wanted

CTFサーバーを実行している場合を除きます。
パスファインダー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.