web-dev-qa-db-ja.com

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

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

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

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

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

165
hilarl
  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

316
Arsen7

コマンドラインから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=#
77
SaeX

これらの答えが与えられてからpg_hba.confC:\Program Files\PostgreSQL\9.3\data)ファイルが変更されました。 Windowsで私にとってうまくいったのは、ファイルを開いてMETHODmd5から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のパスワードを変更しました。

63
SaiyanGirl

ちょっと注意してください、Linuxでは、Sudo su - postgresを実行してpostgresユーザーになり、そこからpsqlを使用して必要なものを変更することができます。

9
Daniel

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

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

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

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

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

    $ Sudo service postgresql reload
    
  4. これは設定ファイルをロードします。これでpostgresシェルにログインしてpsqlユーザーを変更できます。

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

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

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

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

    $ psql -U postgres -W
    
3
Ray Hunter

最新の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をチェックすることができます。

2
Bidhan Majhi

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

Net User postgres postgres

そしてユーザ/パスワードとしてpostgres/postgresを使ってpostgresにログインします。

1
ivofernandes

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

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

1
cpunky

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

端末から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]';

もしuserが存在しないと言ったら、ALTERの代わりにCREATEを使います。

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

1
Inconnu

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

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

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

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

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

0
rahulnikhare