忘れたPostgreSQL Windowsパスワード


31

今朝、Windows 7 ProfessionalデスクトップでPostgreSQLデータベースに接続しようとしています。

デフォルト値は「postgres」ですが、最初にインストールしたときに使用したパスワードを忘れてしまいました。

私はグーグルで検索し、パスワードのリセットに関連する投稿を見つけました。手順に従いましたが、最終結果は投稿で言及されたものとは少し異なります。私は使用しました—

net user postgres postgres

データベースのパスワードをリセットしますが、成功メッセージの代わりに私は得ています:

「システムエラー5が発生しました。アクセスが拒否されました。」

システムエラー。このエラーを回避してパスワードをリセットするにはどうすればよいですか?

回答:


33

(注:EDBインストーラーからPostgreSQL 9.2以降を使用している読者にはほとんど関係ありません。EDBインストーラーでは、を使用してデフォルトのインストールが大幅に簡素化されてNETWORK SERVICEいますが、他のアカウントを構成できます)


私が使用しているnet user postgres postgres 私のデータベースのパスワードをリセットするためにではなく、私は取得しています成功メッセージの"System error 5 has occurred. Access is denied."

サービスアカウントのパスワードをリセットしました(またはリセットしようとしました)。PostgreSQLはセキュリティ上の理由から管理者として実行されません。通常、インストーラーはPostgreSQL 9.1以前の「postgres」ユーザーアカウントでセットアップします1。Windowsでは、ユーザーのパスワードをレジストリに保存せずにユーザーとしてサービスを開始することはできません。そのため、インストーラーはそれを実行します。

Windowsユーザーアカウントのパスワードを変更するpostgresと、PostgreSQLサービスを開始できなくなります。そのため、更新しないで、更新されたパスワードを保存するようにサービス構成を修正する必要があります。

ありがたいことに、別の間違いが原因でそれができなかったと思います。おそらく、特権のないWindowsユーザーアカウントまたはUACを搭載したマシンで「管理者として実行」を使用せずにコマンドプロンプトを実行しているように見えるため、postgresユーザーのパスワードを変更するために必要なアクセス許可で実行されていません。

そのパスワードを変更する前に、それが本当にあなたがやりたいことであることを確認してください。ここで解決しようとしている問題は何ですか?データベース更新プログラムまたはpostgresWindowsユーザーのパスワードを要求する何かをインストールしようとしていますか?

ほとんどの場合、データベースにログインしようとしているだけです。そのために、データベースに保存された(残念ながら完全に無関係な)パスワードを使用します。紛失/忘れたため、リセットする必要があります。

  • を見つけpg_hba.conf、通常はC:\Program Files\PostgreSQL\9.1\data\pg_hba.conf
  • 必要に応じて、変更できるようにアクセス許可を設定します。プロパティのダイアログのセキュリティタブを使用して、管理者による上書きを使用してその権利を付与するまで、ユーザーアカウントはこれを実行できない可能性があります。または、スタートメニューでnotepad / notepad ++を見つけ、右クリックして[管理者として実行]を選択し、[ファイル]-> [開く]を使用して開きpg_hba.confます。
  • これを編集して、ホスト「127.0.0.1/32」上のユーザー「postgres」の「host」行を「trust」に設定します。行がない場合は追加できます。挿入するだけです:

    host all postgres 127.0.0.1/32 trust
    host all postgres ::1/128      trust # if IPv6 is in use
    

    他の行の。(コメントは無視できます。行はで始まります#)。

  • [サービス]コントロールパネルからPostgreSQLサービスを再起動します(start-> run-> services.msc

  • psqlまたはPgAdmin-IIIなどを使用して接続します
  • ALTER USER postgres PASSWORD 'postgres'
  • 追加した行を削除するpg_hba.confか、元に戻します
  • PostgreSQLを再起動します。

参照:WindowsでPostgreSQLのpostgresパスワードをリセットするにはどうすればよいですか?


1. 9.2 NETWORKSERVICEはパスワードを必要としないアカウントを使用するようになったため、この問題はなくなりました


8
また、ip6エントリも必要になる場合があります。「すべてのpostgresをホストする:: 1/128の信頼」
テッドエリオット14年

それでも、私の開発マシンでpostreSQL 9.6の問題が解決しました。なぜそれが役に立たないと思うのかわからない> 9.2
16年

@darwindaveインストールに依存します。NETWORKSERVICEユーザーアカウントを使用するようにインストールした場合、サービスアカウントのパスワードはありません。のような専用のサービスアカウントpostgresまたはドメインアカウントを使用するようにインストールした場合は、役立ちます。
クレイグリンガー

この回答を9.2+で最新の状態にして、Windowsの両方の方法を表示できますか?
エヴァンキャロル

1
@EvanCarroll使用している場合NETWORK SERVICE、リセットするパスワードはありません。別のアカウントを使用して9.2+にインストールした場合、同じ情報が適用されます。また、postgresスーパーユーザーデータベースアカウントのパスワードのリセットに関する部分に変更はありません。したがって、実際に必要な変更はありません。
クレイグリンガー

3

「postgres」と呼ばれるシステム(Windows)ユーザーと同じ名前のデータベースユーザーを区別する必要があります。

pg_hba.confファイルを見つけます-これはPostgreSQLサーバーへのアクセスを制御します。管理者権限を持つユーザーとして編集する必要があります。ユーザー「postgres」に言及している行を探し、一時的にモードを「trust」に設定します。postgresqlを再起動すると、パスワードなしで接続できるはずです。パスワードをリセットしてから、ファイルを元の設定に復元し、PostgreSQLを再起動します。

このマニュアルには、認証方法pg_hba.confファイルの詳細が記載されています。


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