仙台の山奥で自転車に乗ったり転んだり

愛車の GIOS でサイクリングしたりポタリングしたり、それをブログに記録してみたり。ロードバイクや自転車や坂のことを書いてみたり。ときたまプログラムのことを忘れないようにメモってみたり。

Windowsでpostgresユーザのパスワード変更に失敗した場合の対処

絶対にもう一度くらいやりそう。忘れないようメモ。

とある理由から、ローカルWindowsマシンのpostgreユーザをノンパスにしたくなったので、PgAdminで設定してみた。何となく成功した感じなので、さっそく接続してみると認証に失敗……。

PgAdminで削除しようとしたこととWindowsドメインのパスワード・ポリシーが原因だったよう。
パスワードの最少文字数が6文字だったので、Windowsユーザ「postgres」はパスワードの変更に失敗したのかと思われる。「data/global/pg_auth」にはハッシュ値が残っているので、書き換えられていない感じ。(md5の値としては合致するのに、なぜか認証には失敗する……。)

何とかPostgreSQLの認証を元に戻そうと奮闘して、結果としては以下の手順で復元に成功。

  1. 「data」ディレクトリをバックアップ
  2. initdbで新しい環境を構築(スーパユーザのパスワードは元のパスワードに)
  3. サービスを立ち上げたまま「data/global/pg_auth」のpostgreユーザの行を新環境からコピペ
  4. この状態だとpostgreユーザで接続できるので、すかさずpsqlにログイン
  5. ALTER USERでpostgreユーザのパスワードを元のものに設定し直して無事解決

不毛な時間を過ごした……。