postgres ユーザ(ロール)
PostgreSQL では postgres
というユーザ(ロール)がいわゆる root ユーザになりますが、こいつのパスワードを忘れたときの対処法です。
結論
1. pg_hba.conf を編集して認証をスキップさせる
Ubuntu 16.04 LTS ならば /etc/postgresql/10/main
にある pg_hba.conf
というファイルを編集して、認証をスキップさせます。現在有効になっている行をすべてコメントアウトして以下の行を付け加えればいいでしょう*1。許可するアドレスのところ*2は適宜変更してください。
host all all 127.0.0.0/24 trust
2. PostgreSQL を再起動する
PostgreSQL を再起動させて上記の設定を適用させます。
3. PostgreSQL にログインする
PostgreSQL にログインしましょう。パスワード無しでログインできるはずです。
$ psql -U postgres -h 127.0.0.1 psql (10.4 (Ubuntu 10.4-2.pgdg16.04+1)) SSL 接続 (プロトコル: TLSv1.2、暗号化方式: ECDHE-RSA-AES256-GCM-SHA384、ビット長: 256、圧縮: オフ) "help" でヘルプを表示します。 postgres=#
4. パスワードを設定する
psql のプロンプトから \password
と入力してパスワードを再設定します。設定したらログアウトします。
postgres=# \password 新しいパスワードを入力してください: もう一度入力してください: postgres=# \q
5. pg_hba.conf を元に戻し PostgreSQL を再起動する
「1.」で編集した pg_hba.conf
を元に戻して PostgreSQL を再起動します。
6. 設定したパスワードでログインできるかを確認
新しく設定し直したパスワードでログインできるかを確認します。
$ psql -U postgres -h 127.0.0.1 ユーザー postgres のパスワード: psql (10.4 (Ubuntu 10.4-2.pgdg16.04+1)) SSL 接続 (プロトコル: TLSv1.2、暗号化方式: ECDHE-RSA-AES256-GCM-SHA384、ビット長: 256、圧縮: オフ) "help" でヘルプを表示します。 postgres=#