253

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

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

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

私はPostgresを初めて使用し、初めてインストールしました。Railsで使用しようとしていますが、Mac OSXLionを実行しています。

4

15 に答える 15

413
  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

于 2012-06-01T07:42:08.513 に答える
120

-h localhostコマンドラインからpostgresに接続する場合は、コマンドラインパラメータとして追加することを忘れないでください。そうでない場合、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=#
于 2014-02-02T10:21:31.460 に答える
79

これらの回答が与えられてから、 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

于 2014-09-19T22:26:11.643 に答える
16

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

于 2018-03-12T12:58:26.843 に答える
13
  1. ファイルを編集して/etc/postgresql/<version>/main/pg_hba.conf、次の行を見つけます。

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

  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.conftrust戻ってmd5保存します

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

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

    $ psql -U postgres -W
    
于 2017-08-17T02:55:49.950 に答える
13

私はWindows10でこの問題を抱えていました。私の場合の問題は、実行中だったpsqlため、デフォルトでWindowsユーザー名( "Nathan")でログインしようとしましたが、その名前のPostgreSQLユーザーは存在しませんでした。そしてそれは私にそれを教えていませんでした。

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

于 2019-06-26T21:29:30.623 に答える
12

WINDOWSの場合:(私を助けてくれたもの)

これは私が参照しているリンクです:https ://qsartoolbox.org/content/documents/ResettingPostgreSQLPassword.pdf

  1. コマンドを開いて、に移動しC:\Program Files\PostgreSQL\12\data ます。これは通常、正しいパスです。あなたはそれをどこかに保存しておくかもしれません。postgresqlのバージョンが異なる場合は、番号が異なることに注意してください。それは問題ではありません。

  2. pg_hba.confファイルを見つけて、別の場所にコピーします(こうすると、このファイルの変更されていないバージョンが作成されるため、変更を加えた後でファイルを確認できます)

  3. pg_hba.confファイルを開きます(バックアップではなく、元のファイル)

  4. ファイルの下部にあるhostで始まる複数の行を見つけます。

    すべてのホスト127.0.0.1/32 md5

    すべてをホストする::1/128md5

    ホストレプリケーションすべて127.0.0.1/32 md5

    ホストレプリケーションすべて::1/128md5

  5. md5trustに置き換えます:

    すべての127.0.0.1/32の信頼をホストする

    すべてをホストする::1/128信頼

    ホストレプリケーションすべて127.0.0.1/32信頼

    ホストレプリケーションすべて::1/128信頼

  6. このファイルを閉じる

  7. Windowsの検索バーに移動し、サービスアプリを開きます。postgresを見つけて再起動します。 サービスアプリの画像

  8. cmd ..をcmdに書き込み、次にcdbinに書き込みます。あなたの道はC:\Program Files\PostgreSQL\12\bin

  9. 入る:psql -U postgres -h localhost

  10. 入力:ALTER USER postgres with password '<your new password>';必ず;を含めてください。最後に 「ALTERROLE」が前の行が正常に実行されたことを示すものとして表示されます。

  11. 元のpg_hba.confファイルを開き、trustからmd5に戻します。

  12. 以前と同じようにサービスアプリでサーバーを再起動します

于 2020-11-15T22:14:14.267 に答える
7

最新の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 Shell(PSQL)に移動し、すべてを空白のままにします。

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

今回はパスワードの入力を求められず、ログインしますが、

次に、この行を実行します。 ALTER USER yourusername WITH SUPERUSER

これで、\qを使用してシェルを離れることができます

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

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

于 2019-02-03T13:40:40.790 に答える
2

同じ問題を解決するために私がしたことは次のとおりです。

ターミナルから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に貼り付けた特定の行を削除して保存します。

于 2017-11-14T12:08:38.800 に答える
1

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

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

于 2017-03-21T15:31:14.680 に答える
0

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

net user postgres postgres

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

于 2016-06-07T16:36:11.320 に答える
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では、ファイルは安全なディレクトリに保存されていると想定されているため、特別なアクセス許可のチェックは行われません。

于 2017-09-20T08:58:27.030 に答える
0

Mac OSでpostgresqlを実行している場合は、次のことを試してください

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

  2. sudo vi /Library/PostgreSQL/9.2/data/pg_hba.conf

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

  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. サービスを再開します

于 2020-03-16T15:22:19.410 に答える
-1

以下の行をpg_hba.confファイルに追加します。これはpostgresのインストールディレクトリにあります

hostnossl    all          all            0.0.0.0/0  trust   

動作を開始します。

于 2021-02-26T10:47:58.690 に答える
-2

これは、Windowsで私のために働いたものです:

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

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

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

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

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

于 2018-11-21T08:23:58.500 に答える