web-dev-qa-db-ja.com

Postgresの管理者パスワードを忘れた(Windowsインストール)、リセットできない

Windows PostgreSQLをインストールしています。

いくつかの投稿によると、「postgres」ユーザーに設定されたデフォルトのパスワードはありませんが、空のパスワード文字列を使用して接続することはできません。

接続しようとすると、この例外を受け取ります。

Caused by: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "postgres"

最も関連したヒントは次のとおりです。 https://stackoverflow.com/a/25943227/1005607

Open  pg_hba.conf  
Change md5 -> TRUST  
then restart PgAdmin.

私はそれを試してPGAdminを再起動しましたが、接続しようとするとパスワードを尋ねられます:

enter image description here

Windowsのタスクマネージャーは、いくつかのPostgreSQLプロセスが実行されていることを示します。スイッチをオフにすることはできません。

私はこれを試しましたが失敗しました:

pg_ctl restart

ERROR: 
pg_ctl: no database directory specified and environment variable PGDATA unset

psql.exe postgres
Password: (none)
ERROR:
psql: fe_sendauth: no password supplied

ユーザー「postgres」のデフォルトのパスワードをリセットするにはどうすればよいですか?

9
gene b.

AK47の回答といくつかの追加情報に基づいて、次のようにして修正しました。

1)現在実行中の場合はPostgresを停止します(以下のコマンドライン)。 「データ」ディレクトリを指定する必要があります。私の場合、C:\ PostgreSQL\data

pg_ctl -D C:\PostgreSQL\data stop

2)ファイルpg_hba.conf(\ data dirにもあります)を次のように編集します。

AK40が書いたように、c すべてのMD5参照を信頼に変更、例えば.

# 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
# Allow replication connections from localhost, by a user with the
# replication privilege.
Host    replication     all             127.0.0.1/32            trust
Host    replication     all             ::1/128                 trust

3)実行する

psql -U postgres

4)表示されるPGコマンドプロンプトで、

ALTER USER Postgres WITH PASSWORD '<newpassword>';

5)wq enterと入力してこれを保存し、PGプロンプトを終了します

6)次に、Postgresを起動します

pg_ctl -D C:\PostgreSQL\data start

7)MD5 -> Trustpg_hba.conf変更を後で元に戻したい場合があります。

9
gene b.

pg_hba.confファイルを更新して、信頼できるローカル接続を許可します

[root@server] vim pg_hba.conf
>> local all all         trust

postgreSQLサーバーを再起動します

[user@machine] pg_ctl -D C:\PostgreSQL\data restart    (Windows)
[root@server] service postgresql restart            (Linux)

この時点で、パスワードを入力せずにローカル接続を使用してpostgresユーザーとしてサーバーに接続できます(psqlコマンドを呼び出すときに-hパラメーターを省略すると、ローカル接続が使用されます- -hを渡すと、Host all all 0.0.0.0/0 <method>ファイルのpg_hba.conf行と一致します)

[root@server] psql -U postgres

psqlターミナルで次のコマンドを使用して、postgresユーザーロールを変更し、パスワードを好きなものに設定できます。

[psql] alter role postgres password <new_password>;

これが完了したら、PostgreSQLサーバーを再起動できます

[user@machine] pg_ctl -D C:\PostgreSQL\data restart     (Windows)
[root@server] service postgresql restart             (Linux)

この時点で、パスワードを新しいパスワードに変更する必要があります

3
AK47