サーバーで色々操作していてPostgresのデータベースで使うユーザーのパスワードを忘れた場合は下記の方法で新しいパスワードを再設定しなおしましょう。
今日の環境
Ubuntu22.04
PostgreSQL 14
今日の目的
Postgresの設定ファイルから仮でパスワードなしで接続できるようにします。
その後にコマンドから、新しいパスワードを設定しなおします。
最後にパスワードでデータベースに接続させるように再設定します。
※作業にリスクがあると感じた場合はバックアップを取るなり自己責任で操作をしてください。
pg_hba.confを探す
Postgrtesをインストールした後にpg_hba.confのコンフィグファイルも作成されます。ここでユーザーがどのようにデータベースに接続できるようにするか設定できます。
通常は下記のファイルパスにあります。
PostgreSQLのバージョンによりファイルの場所が少し変わるので注意します。
/etc/postgresql-9.1/pg_hba.conf
/etc/postgresql/14/main/pg_hba.conf
rootで入っている場合はpwdのコマンドでどこにいるか確認しましょう。
cd のコマンドとlsのコマンドを使いながらPostgresの場所を探します。


pg_hba.confを見つけました。
pg_hba.confのバックアップをとる
では下記のコマンドでオリジナルのファイルをコピーしておきます。
※パスワードをリセットしたらこっちに戻します。
cp pg_hba.conf pg_hba.conf-backup

ファイルがコピーで来たことを確認しました。
認証方法を変更する
ではテキストエディタを使ってこのpg_hba.confを開きます。
sudo nano pg_hba.conf
もともとはこんな感じになっていますね。

これを下記のように変えます。

Ctl +X で抜け出し Yで上書き、エンターでファイル名をそのままにします。
Postgresのサーバーをリスタートする
ではファイルを更新しただけではコンフィグを読み取ってくれないのでPostgresのサービスを再起動します。
sudo /etc/init.d/postgresql restart

postgresのユーザーで接続する
ここでコンフィグをtrustにしたのでどのユーザーでもパスワードなしで接続できるようになりました。
ではpostgresのユーザーで接続してみます。
psql -U postgres

パスワードなしで入れました。
パスワードを更新する
では更新したいユーザーのパスワードを下記のコマンドで更新します。
ALTER USER my_user_name with password 'my_secure_password'; 例: ALTER USER postgres with password 'Otsukare5555';

元のコンフィグファイルに戻す
パスワードなしで誰でも接続できてしまうのは危険なので、元のファイルに戻します。
cp pg_hba.conf-backup pg_hba.conf

Postgresサーバーのリスタート
同じようにPostgresのシステムを再起動します。
sudo /etc/init.d/postgresql restart
これでpsqlのコマンドでパスワードが聞かれたらもとに戻っているという事ですね。

ではお疲れ様です。