web-dev-qa-db-ja.com

ユーザーpostgresのパスワード要件を削除

インストール時に、PostgreSQLにはdb rootユーザー(postgres)のパスワードがないことを理解しています。

postgres=# select usename, passwd is null from pg_shadow;
 usename  | ?column? 
----------+----------
 postgres | t
(1 row)

...そしてそれを設定することをお勧めします:

alter role postgres password '<<very-secret>>';

(そしてpg_hba.confファイルを適宜更新します)

私の質問は次のとおりです。ユーザーpostgresにパスワードが必要なかったときに、以前の状況に戻すために使用するSQLは何ですか。

一般的に、どのロールのパスワード要件を削除するにはどうすればよいですか?パスワードを変更する方法ではなく、パスワードの要件を削除する方法(テーブルpg_shadowのnull passwd列)を尋ねています。

50

パスワードが必要かどうかは、pg_shadowとは関係なく、パスワードがユーザーに対して実際に定義されているかどうかには関係ありません。はい、私は知っています、それは奇妙です。

pg_hba.confは、認証方法を制御します。パスワードを要求する場合は、md5認証を使用します。パスワードなしで誰にもログインできないようにするには、trustを使用します。オペレーティングシステムでPostgreSQLと同じユーザー名が必要な場合は、peer(UNIX、ローカル接続のみ)またはsspi(Windows)を使用します。

パスワードが設定されていても、pg_hba.confがPostgreSQLに要求するように指示していない場合、パスワードは無視されます。

pg_hba.confがPostgreSQLにパスワードを要求するように指示しているが、何も設定されていない場合、どのパスワードを指定しても、すべてのログイン試行は失敗します。

63
Craig Ringer

デフォルトでは、postgresユーザーにはパスワードがありません。ユーザーパスワード(この場合はpostgresユーザー/ロール)を削除するには:

alter role postgres password null;

また、pg_hba.confの認証をtrustに設定する必要があります- 詳細を表示

15
lalligood

これは私のために働きました:

alter role postgres password '';

1
thouliha