Postgresql:ユーザー「postgres」のパスワード認証に失敗しました


431

PostgreSQL 8.4、Postgresクライアント、Pgadmin 3をインストールしました。コンソールクライアントとPgadminの両方で、ユーザー「postgres」の認証に失敗しました。以前は機能していたので、ユーザーを「postgres」、パスワードを「postgres」と入力しました。ただし、認証は失敗します。私はこの問題なく数回前にそれをしました。私は何をすべきか?そして、何が起こりますか?

psql -U postgres -h localhost -W
Password for user postgres: 
psql: FATAL:  password authentication failed for user "postgres"
FATAL:  password authentication failed for user "postgres"

1
私の場合、パスワードが複雑すぎるため接続が失敗します ...
JJD

3
このページを最後までお読みください。これを機能させるには、いくつかのことをしなければなりませんでした。まず、ALTERステップ、次にファイルを編集しpg_hba.conf、次にpostgres再起動します
elrobis 2015年


また、2つのPostgresインスタンスが実行されていないことを確認します。1つはWindowsで、もう1つはDockerで実行されます。Dockerは、移植がすでに行われていることを私に報告しませんでした。つまり、ツールはWindowsマシンPostgresに接続されていましたが、Dockerポガーではすべてが問題ありませんでした。
koppor

回答:


750

私が正しく覚えている場合、ユーザーpostgresはデフォルトでUbuntuにDBパスワードが設定されていません。つまり、postgres OSユーザーアカウントを使用することによってのみ、そのアカウントにログインできます。

rootあなたができるボックスへのアクセス権があると仮定すると:

sudo -u postgres psql

それがdatabase "postgres" does not existsエラーで失敗する場合は、UbuntuサーバーやDebianサーバーにいない可能性が高いです:-)この場合template1、次のコマンドを追加します。

sudo -u postgres psql template1

これらのコマンドのいずれかがエラーで失敗したpsql: FATAL: password authentication failed for user "postgres"場合は、ファイルを確認します/etc/postgresql/8.4/main/pg_hba.conf。最初の非コメント行として、次のような行があるはずです。

local   all         postgres                          ident

PostgreSQLの新しいバージョンの場合、ident実際にはになる可能性がありますpeer。それも大丈夫です。

psqlシェル内で、DBユーザー postgresにパスワードを与えることができます。

ALTER USER postgres PASSWORD 'newPassword';

次のようにpsql入力するCtrlDか、コマンドでシェルを終了できます\q

これで、pgAdminにDBスーパーユーザーの有効なパスワードを与えることができるはずです。:-)


ありがとう、ありがとう!psqlは動作します。しかし、それでもpgadmin3に問題があります。システムのrootユーザーのパスワードを要求されます。(私には奇妙です)pg_hba.confはあなたが言うように。
I159 2011年

追加し、 '\ q'を使用してコンソールを終了します。それを見つけるのにしばらく
時間がかかりまし

2
ident最初のステップが機能するためには、pg_hba.confにpostgresユーザーが設定されている必要があることに注意してください。すでにmd5などに設定している場合は、自動ログインできません。
Cerin 2013

80
とてもいいものです。他の新しいユーザーには、ALTER USER行の最後にセミコロンを忘れないでください。
itols 2013年

3
@itsolsあなたは言った: "とてもいい人。他の新しいユーザーにとって、ALTER USER行の終わりにセミコロンを忘れないでください..."あなたはたった4時間の試練を終わらせた!私は今すごく愚かであり、感謝しています。:-D
frozenjim 2018年

148

スタッフの反応は正しいですが、さらに自動化したい場合は次のようにできます。

$ sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"

できた!ユーザー= postgresおよびパスワード= postgresを保存しました。

ユーザーpostgres ubuntuのパスワードがない場合は、次のようにします。

$ sudo passwd postgres


パスワードに「!」などの興味深い文字が含まれている場合は注意してください
ブライアンピーターソン

45

これは苛立たしいものでした。上記の答えのほとんどは正しいですが、pg_hba.confファイルの変更が有効になる前にデータベースサービス再起動する必要があるとは述べていません。

上記のように変更した場合:

local all postgres ident

次に、rootとして再起動します(centosでは、サービスservice postgresql-9.2 restartのようなものです)これで、ユーザーpostgresとしてデータベースにアクセスできるはずです。

$psql
psql (9.2.4)
Type "help" for help.

postgres=# 

これが新しいpostgresユーザーのための情報を追加することを願っています


26
ubuntuタイプ: sudo service postgresql restart
アンキルツァー2013

4
RHEL7の使用sudo systemctl restart postgresql.service
Spechal 2014

1
Macではどうですか?
AustinT

1
macでは、SOにこの質問チェックアウトstackoverflow.com/questions/7975556/...
Rohith Nandakumar

ミゲルに感謝します。パスワードを手動で変更しましたが、postgresサーバーを再起動するまで、pgAdminはデータベースに接続しませんでした。
Ustin

20

pg_hba.confファイルを編集します。 sudo emacs /etc/postgresql/9.3/main/pg_hba.conf

すべての認証方法をに変更しtrustます。「postgres」ユーザーのUnixパスワードを変更します。サーバーを再起動します。ログインしてpsql -h localhost -U postgres、設定したばかりのUnixパスワードを使用します。動作する場合は、pg_hba.confファイルをデフォルト値に再設定できます。


1
完全に行き詰まった場合、これが唯一の保証された方法です。すべてのメソッドを信頼するように変更し、dbを再起動し、次にrootとしてsudo su - postgres、postgres db(および必要に応じてシェルで)の次の設定/修正/設定解除パスワードを設定し、セキュアmd5またはidentメソッドに復元して、再起動して値を固定します。:ところで、セント/ RedHatの9.4のファイルは次の場所にあり/var/lib/pgsql/9.4/data/pg_hba.conf
パパック

17

初めてそれを使用していて、パスワードが何であるかについての情報がない場合は、以下の手順に従ってください(ubuntuを使用している場合)。

  1. pg_hba.confファイルを開きます。/etc/postgresql/9.x/main

     sudo vi pg_hba.conf 

    2.以下の行を編集します

     local   all             postgres                                peer

     local   all             postgres                                trust
  2. サーバーを再起動します

      sudo service postgresql restart
  3. 最後に、図に示すように、パスワードを必要とせずにログインできます最後に、図に示すように、パスワードを必要とせずにログインできます

詳細はこちらを参照してください


12

postgresユーザーとしてpostgresシェルにログインしようとしている場合は、次のコマンドを使用できます。

postgresユーザーに切り替える

# su - postgres

psqlにログイン

# psql

それが役に立てば幸い


3
su - postgresはUbuntu 16.04のposgresql 9.5でパスワードを要求します
Prashanth Chandra

3
su - postgresfedoraの公式ドキュメントが提案するコマンドですが、パスワードプロンプトも表示されます。それを回避するために、ここで受け入れられた回答と同じコマンドを使用するこのpostgresフォーラムのメールをフォローしましたsudo -u postgres psql。データベースサーバーを初期化して起動することを忘れないでください。
icc97

11

-Wパラメーターを使用せず、パスワードは空白のままにしてください。ユーザーがパスワードなしで作成される場合があります。

それが機能しない場合は、パスワードをリセットしてください。これにはいくつかの方法がありますが、これは多くのシステムで機能します。

$ su root
$ su postgres
$ psql -h localhost
> ALTER USER postgres with password 'YourNewPassword';

7

原則として、POSTGRESユーザーのパスワードは絶対に設定しないでください

pgAdminからのスーパーユーザーアクセスが必要な場合は、別のスーパーユーザーを作成します。そうすれば、そのスーパーユーザーの資格情報が危険にさらされた場合、いつでも実際のデータベースホストにSSHで接続し、次のコマンドを使用して手動でスーパーユーザーを削除できます

sudo -u postgres -c "DROP ROLE superuser;"

1
この経験則の理由は何ですか?
Gershom 2018年

2
そのため、すべてのスーパーユーザーを危険にさらすことはできません。
ardilgulez

1
どのようにしてpostgresのパスワードを設定すると、すべてのスーパーユーザーが危険にさらされることになりますか?
Gershom 2018年

4
パスワードを設定しても、すべてのスーパーユーザーが危険にさらされるわけではありませんが、パスワードを設定しないと、すべてのスーパーユーザーが危険にさらされることはありません。理由は次のとおりです。パスワードを設定しないと、postgresユーザーへのパスワードログインの試行は拒否されますが、信頼して自分で使用することができるためです。
ardilgulez 2018年

7

postgresシェルに入ったら、次のコマンドを入力します

postgres=# \password postgres

このコマンドを入力すると、パスワードを設定するように求められます。パスワードを設定してから、再試行してください。


3

postgresqlをインストールするときに、ユーザーpostgresにパスワードが設定されていない場合、次のコマンドを使用して、UNIXでパスワードを明示的に設定する必要があります。

sudo passwd postgres

それはあなたのsudoパスワードを尋ね、そして新しいpostgresユーザーパスワードを要求します。 ソース


0

パスワードの有効期限が切れていないかどうかも確認する必要があることを追加したいと思います。

詳細については、Postgresパスワード認証が失敗するを参照てください。


1
将来リンクが存在しなくなった場合に備えて、リンクの詳細と概要を追加してください。そうでなければ、これは低品質/リンクのみの回答としてフラグが立てられる可能性があります。
Tanner

:私はこれを読んだことがあると思いますmeta.stackexchange.com/questions/8231/...
タナー

0

ログインしようとしたいくつかの組み合わせは次のとおりです。

# login via user foo
psql -Ufoo -h localhost

sudo -u postgres psql postgres

# user foo login to postgres db
psql -Ufoo -h localhost -d postgres

0

同様の問題がありました。Ubuntuには、スーパーユーザー用のパスワードを使用してコンソールにログインしたままにした。psql行コマンドで-h localhostを使用して接続した場合を除きます。

私は "localhost:8080 / MyJSPSiteLogIn"も観察しました-示しました:致命的:ユーザー "user"の認証エラー。

pg_hba.confは問題ありませんでした。

同じサービスで2つのバージョンのpostgresが実行されていることに気付きました。

解決済み-inutilバージョンのアンインストール。


0

私は同様の問題に直面していました。PGAdminでパスワード「ユーザー「postgres」のパスワード認証に失敗しました」を更新した後、データベースにアクセスしているときにプロンプ​​トが表示されました


解決:

  1. postgresサーバーをシャットダウンする
  2. pgadminを再実行します
  3. pgadminはパスワードを要求します。
  4. 上記のユーザーの現在のパスワードを入力してください

問題が解決することを願っています

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


-1

これが短期間でお役に立てば幸いです。以下のコマンドを使用して、postgres sqlのパスワードを変更できます。

コマンド

sudo -u postgres psql

次に、パスワードを更新できます

コマンド

ユーザーpostgresパスワード「YOUR_NEW_PASSWORD」を変更します。


1
あなたの答えには、すでに追加された情報が含まれています:stackoverflow.com/a/7696398/8283469
L. Guthardt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.