postgresのインストール中に入力したパスワードを忘れました


205

Postgresのデフォルトユーザーのパスワードを忘れたか、(インストール中に)入力ミスした。実行できないようで、次のエラーが表示されます。

psql: FATAL:  password authentication failed for user "hisham"
hisham-agil: hisham$ psql 

とにかくパスワードをリセットする方法はありますか、またはスーパーユーザー権限で新しいユーザーを作成するにはどうすればよいですか?

私はPostgresを使い始めたばかりで、初めてインストールしたばかりです。Railsで使用しようとしていますが、Mac OS X Lionを実行しています。


1
回答についてはまだコメントできないので、このようにしてください。私はSaiyanGirlが言ったことを行いましたが、それでもパスワードを入力する必要がありました。これは、ログインするための「postgres」でした。その後、パスワードをリセットできました
Pascale

回答:


359
  1. ファイルを見つけますpg_hba.conf-たとえばにあり/etc/postgresql-9.1/pg_hba.confます。

    cd /etc/postgresql-9.1/

  2. それをバックアップする

    cp pg_hba.conf pg_hba.conf-backup

  3. 次の行を(最初のコメント化されていない行として、または唯一の行として)配置します。

以下のすべての発生(ローカルおよびホスト)で、次のように変更する必要があるものがない場合は、レプリケーションセクションを実行します。MD5またはピアの認証は存在しません。

local  all   all   trust
  1. PostgreSQLサーバーを再起動します(Linux上など)。

    sudo /etc/init.d/postgresql restart

    サービス(デーモン)がログファイルでレポートを開始しない場合:

    このビルドではローカル接続はサポートされていません

    あなたは変えるべきです

    local all all trust

    host all all 127.0.0.1/32 trust

  2. これで、任意のユーザーとして接続できます。スーパーユーザーとして接続しますpostgresインストールによってはスーパーユーザー名が異なる場合があります。pgsqlたとえば、システムによってはと呼ばれます

    psql -U postgres

    または

    psql -h 127.0.0.1 -U postgres

    (最初のコマンドでは、常にローカルホストに接続されるわけではないことに注意してください)

  3. パスワードをリセットします(postgresユーザーをリセットするため、my_user_nameをpostgresに置き換えます)

    ALTER USER my_user_name with password 'my_secure_password';

  4. 古いものを復元しpg_hba.conf、あるとして非常に危険周囲に保つために

    cp pg_hba.conf-backup pg_hba.conf

  5. 安全で実行するためにサーバーを再起動します pg_hba.conf

    sudo /etc/init.d/postgresql restart

そのpg_hbaファイルについてさらに読むhttp ://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html


9
それから始めpsqlますか?パスワードの入力を求められますが、パスワードがわかりません
CodyBugstein 14

4
この答えは私にとってはうまくいきませんでした。ステップ3を実行した後、サービスが開始しません。わからないので、OS(W8)である可能性があります。
Scaramouche 2016

3
Windows用の誰か?
Mahesha999 2016年

2
pg_hba.confのエントリの順序が重要であることを覚えておいてください。ファイルの最後に「local all all tr​​ust」を追加すると、以前のレコードが最初に照合されるため、期待どおりに機能しません。だから、それをファイルの一番上に置いて、あなたが期待することをしてください。
Tagar

6
このエラーが発生しているウィンドウを使用している場合は、@ SaiyanGirlの回答までスクロールしてください。既存のエントリのMETHOD列を「trust」に変更し、完了したら元に戻します
sean.hudson

99

コマンドラインからpostgresに接続するときは、追加することを忘れないでください -h localhost、コマンドラインパラメータとしてをください。そうでない場合、postgresはPEER認証モードを使用して接続しようとします。

以下は、パスワードのリセット、PEER認証を使用したログインの失敗、およびTCP接続を使用したログインの成功を示しています。

# sudo -u postgres psql
could not change directory to "/root"
psql (9.1.11)
Type "help" for help.

postgres=# \password
Enter new password:
Enter it again:
postgres=# \q

失敗:

# psql -U postgres -W
Password for user postgres:
psql: FATAL:  Peer authentication failed for user "postgres"

での作業-h localhost

# psql -U postgres -W  -h localhost
Password for user postgres:
psql (9.1.11)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

postgres=#

7
「-h」オプションに関するヒントをありがとう、助けてくれました。
Bunkerbewohner 2014

Windows cmd.exeでは不要
Fabien Haddadi 2018

1
Macのベストアンサー
Muhammad Umar

72

pg_hba.confC:\Program Files\PostgreSQL\9.3\dataこれらの答えが与えられたので)ファイルが変更されました。私にとって、Windowsで機能したのは、ファイルを開いてをMETHODからmd5に変更することtrustです。

# 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                 trust

次に、pgAdmin IIIを使用して、パスワードなしでログインし、次のようにしてユーザーpostgres'パスワードを変更しました。File -> Change Password


PgAdminが現在のパスワードを要求するため、これは機能しません...「信頼」にリセットして、PgAdminを再起動しました。それでも現在のパスワードを入力しないとリセットできません...
gene b。

1
メソッドを変更したら、これtrustに従って、cmdでパスワードを変更できます
Gilad Green

12

Linuxでは、単に実行sudo su - postgresしてpostgresユーザーになり、そこからpsqlを使用して必要なものを変更できます。


3
psqlを実行した後もパスワードは必要です
Snow

8
  1. ファイル/etc/postgresql/<version>/main/pg_hba.confを編集して、次の行を見つけます。

    local   all             postgres                                md5
  2. 行を編集md5し、最後に変更しtrustてファイルを保存します

  3. postgresqlサービスをリロードします

    $ sudo service postgresql reload
  4. これにより、構成ファイルがロードされます。これでpostgrespsqlシェルにログインしてユーザーを変更できます

    $ psql -U postgres
  5. postgresユーザーのパスワードを更新する

    alter user postgres with password 'secure-passwd-here';
  6. ファイル/etc/postgresql/<version>/main/pg_hba.confを編集し、ファイルにtrust戻ってmd5保存します

  7. postgresqlサービスをリロードします

    $ sudo service postgresql reload
  8. パスワードの変更が機能していることを確認します

    $ psql -U postgres -W

Windowsソリューションを提供するのは難しいですか?誰もがsudoでLinuxを使用しているわけではありません。Windowsではどうすればよいですか?
遺伝子b。

7

私はWindows 10でこの問題を抱えていましたが、私の場合の問題は私が実行していたことです psqlして、デフォルトでWindowsユーザー名(「Nathan」)でログインしようとしたことですが、その名前のPostgreSQLユーザーがいませんでした。そしてそれは私にそれを言っていませんでした。

したがって、解決策はpsql -U postgresだけpsqlではなく実行することであり、その後、インストール時に入力したパスワードが機能しました。


5

最新のpostgresバージョン(> 10)に対するWindowsユーザーの回答を追加します。

postgresのインストール場所に移動し、「」を検索するとpg_hba.conf、次の場所にあります..\postgres\data\pg_hba.conf

そのファイルをメモ帳で開き、次の行を見つけます。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections: 
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
#..

メソッドをmd5からtrustに変更します。

# 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                 trust
# ...

次に、SQLシェル(PSQL)に移動し、すべてを空白のままにします。

Server [localhost]:
Database [postgres]:
Port [8000]:
Username [postgres]: 

今回はパスワードを要求せず、ログインします。

この行を実行して、 ALTER USER yourusername WITH SUPERUSER

これで、シェルを\ qで終了できます

再びファイルpg_hba.confに移動し、METHODをtrustからmd5に再度変更して保存します。

新しいユーザーとパスワードでログインすると、\ duの属性を確認できます。


1

Windowsインストールの場合、Windowsユーザーが作成されます。そして、「psql」はポートへの接続にこのユーザーを使用します。PostgreSQLユーザーのパスワードを変更しても、Windowsのパスワードは変更されません。以下のコマンドラインは、コマンドラインにアクセスできる場合にのみ機能します。

代わりに、Windows GUIアプリケーション "c:\ Windows \ system32 \ lusrmgr.exe"を使用できます。このアプリは、Windowsによって作成されたユーザーを管理します。これで、パスワードを変更できます。


1

同じ問題を解決するために私がしたことは:

ターミナルからgeditエディターでpg_hba.confファイルを開きます。

sudo gedit /etc/postgresql/9.5/main/pg_hba.conf

パスワードを要求します。管理者ログインパスワードを入力します。これにより、ファイルでgeditが開きます。次の行を貼り付けます。

host  all   all  127.0.0.1/32  trust

すぐ下-

# Database administrative login by Unix domain socket

保存して閉じます。ターミナルを閉じて再度開き、次のコマンドを実行します。

psql -U postgres

ここで、psqlコンソールに入ります。これを入力してパスワードを変更します。

ALTER USER [your prefered user name] with password '[desired password]';

ユーザーが存在しないと表示されている場合は、ALTER使用する代わりにCREATE

最後に、pg_hbaに貼り付けた特定の行を削除して保存します。


0

あなたが窓にいるなら、あなたはただ走ることができます

net user postgres postgres

そして、ユーザー/パスワードとしてpostgres / postgresでpostgresにログインします


0

ユーザーのホームディレクトリにあるファイル.pgpassまたはPGPASSFILEによって参照されるファイルには、接続にパスワードが必要な場合に使用するパスワードを含めることができます(他にパスワードが指定されていない場合)。Microsoft Windowsでは、ファイルの名前は%APPDATA%\ postgresql \ pgpass.confです(%APPDATA%はユーザーのプロファイルのApplication Dataサブディレクトリを指します)。

このファイルには、次の形式の行が含まれている必要があります。

ホスト名:ポート:データベース:ユーザー名:パスワード

(リマインダーコメントをファイルに追加するには、上記の行をコピーし、その前に#を付けます。)最初の4つのフィールドは、リテラル値または*であり、すべてに一致します。現在の接続パラメータと一致する最初の行のパスワードフィールドが使用されます。(したがって、ワイルドカードを使用するときは、より具体的なエントリを最初に置きます。)エントリに:または\を含める必要がある場合は、この文字をでエスケープします。localhostのホスト名は、ローカルマシンからのTCP(ホスト名localhost)接続とUnixドメインソケット(pghost emptyまたはデフォルトのソケットディレクトリ)接続の両方に一致します。スタンバイサーバーでは、レプリケーションのデータベース名は、マスターサーバーに対して行われたストリーミングレプリケーション接続と一致します。ユーザーは同じクラスター内のすべてのデータベースに対して同じパスワードを持っているため、データベースフィールドの有用性は限られています。

Unixシステムでは、.pgpassの権限で、ワールドまたはグループへのアクセスをすべて拒否する必要があります。コマンドchmod 0600〜/ .pgpassでこれを実現します。権限がこれよりも厳しくない場合、ファイルは無視されます。Microsoft Windowsでは、ファイルは安全なディレクトリに格納されていると想定されているため、特別な権限チェックは行われません。


これは私にとってはうまくいき、パスはC:\ Users \ <user> \ AppData \ Roaming \ postgresql \ pgpass.confに拡張されました。また、PostgreSQLサーバーをオフにしてからオンにすることも役立つようです。
地理データ

0

Mac OSでpostgresqlを実行している場合は、以下を試してください

  1. pg_hba.confファイルを編集します

  2. sudo vi /ライブラリ/PostgreSQL/9.2/data/pg_hba.conf

  3. すべてのユーザーの「md5」メソッドをファイルの下部近くの「信頼する」に変更します

  4. サービスの名前を見つける

  5. ls / Library / LaunchDaemons

  6. postgresqlを探す

  7. postgresqlサービスを停止します

  8. sudo launchctl stop com.edb.launchd.postgresql-9.2

  9. postgresqlサービスを開始します

  10. sudo launchctl start com.edb.launchd.postgresql-9.2

  11. postgresとしてpsqlセッションを開始する

  12. psql -U postgres

  13. (「信頼」設定のため、パスワードを要求しないでください)

  14. 入力してpsqlセッションでパスワードをリセットします

  15. ALTER USER postgres with password 'secure-new-password';

  16. \ q
  17. 入る

  18. pg_hba.confファイルを編集します

  19. 「md5」に戻します

  20. サービスを再起動します


-1

これは私にとってWindowsでうまくいったものです:

C:\ Program Files \ PostgreSQL \ 9.3 \ dataにあるpg_hba.confファイルを編集します。

# IPv4 local connections: host all all 127.0.0.1/32 trust

メソッドを信頼からmd5に変更し、Windowsでpostgresサービスを再起動します。

その後、pgadminを使用して、パスワードなしでpostgresユーザーを使用してログインできます。ファイル->パスワードの変更を使用してパスワードを変更できます。

postgresユーザーにスーパーユーザー権限がない場合、パスワードを変更できません。この場合、スーパーユーザーアクセス権を持つ別のユーザー(pgsql)でログインし、ユーザーを右クリックして[プロパティ]-> [ロール特権]を選択して、他のユーザーに特権を提供します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.