まず、ほとんどのUnixディストリビューションでは、デフォルトのPostgresユーザーは認証にパスワードを要求も使用もしないことを理解することが重要です。代わりに、Postgresが最初にインストールされた方法と使用しているバージョンに応じて、デフォルトの認証方法はident
になります。 またはpeer
。
ident
認証では、TCPポート113で実行されているオペレーティングシステムの識別サーバーを使用して、ユーザーの資格情報を確認します。
peer
一方、認証はローカル接続に使用され、オペレーティングシステムのログインしたユーザー名がPostgresデータベースのユーザー名と一致することを確認します。
ほとんどのシステムでは、デフォルトのPostgresユーザーはpostgres
です。 また、認証にパスワードは必要ありません。したがって、パスワードを追加するには、最初にログインしてpostgres
として接続する必要があります ユーザー。
$ sudo -u postgres psql
接続に成功し、psql
を表示している場合 プロンプトが表示されたら、パスワードの変更にジャンプします セクション。
データベース「postgres」が存在しないというエラーを受け取った場合は、template1
に接続してみてください 代わりにデータベースを使用し、成功した場合は、パスワードの変更に進みます。 。
$ sudo -u postgres psql template1
psql
に接続しようとしたときに認証エラーが発生した場合 クライアントの場合、Postgres認証構成ファイル(pg_hfa.conf)を変更する必要がある場合があります。
通常は/etc/postgresql/#.#/main/pg_hba.conf
にある構成ファイルを開きます 、ここで#.#
使用しているPostgresのバージョンは次のとおりです:
$ sudo nano /etc/postgresql/9.3/main/pg_hba.conf
auth configファイルは、認証ルールのリストです。 postgres
を表示している最初の行が見つかるまでファイルを下にスクロールします 3番目の列のユーザー(そのような行が存在する場合)。必要に応じて行のコメントを解除します(セミコロンを削除します)。そうでない場合は、行が完全に欠落している場合は、ファイルの先頭に次の行を追加して変更を保存します。
local all postgres peer
この認証ルールは、ユーザーpostgres
のすべてのデータベースに対して確立されたローカル接続についてPostgresに通知するだけです。 、peer
を使用して認証します プロトコル。
注:Postgresの一部の古いバージョンは、デフォルトの認証方法であるidentを優先しますが、最近のほとんどのインストールでは、代わりに上記のピアを利用します。結果が異なる場合は、両方をテストする必要があるかもしれません。
構成ファイルが更新されたら、デフォルトユーザーとしてログインして接続の手順を繰り返します。 デフォルトのpostgres
として接続を試みるセクション ユーザー。成功したら、パスワードの変更に進みます。
psql
でPostgresへの接続が確立されました プロンプトが表示されたら、ALTER USER
を発行します postgres
のパスワードを変更するコマンド ユーザー:
postgres=# ALTER USER postgres PASSWORD 'myPassword';
ALTER ROLE
成功すると、PostgresはALTER ROLE
の確認を出力します 上記のように。
最後に、psql
を終了します \q
を使用してクライアント コマンド。
postgres=# \q
これですべて完了です。デフォルトのpostgres
これで、ユーザーは他のアプリケーションで使用するためのアカウントに関連付けられたパスワードを使用できます。