postgresユーザのパスワード忘れて困った

最近herokuをちょろっとだけ触っています。herokuではPostgreSQLが使われてるのでローカルにもインストールしたんですけど、ちょっと間が空いて、Postgresユーザーのパスワード忘れて困ったのでメモ書きです。環境はOSX 10.6です。

ちょっと検索すると本家MLの過去ログからビンゴなスレッドがありました。要はローカルからの接続時に認証を一旦外してパスワード変更後、元に戻すというものです。認証を設定しているのはpg_hba.confというファイルで僕の手元では下記の位置にありました。md5(パスワード認証)となっている認証形式をtrustに書き換えます。

$ sudo vim /Library/PostgreSQL/9.1/data/pg_hba.conf
- local   all             all                                     md5
+ local   all             all                                     trust

設定ファイルを修正後に再起動すると、postgresユーザでパスワードなしでログインできます。あとはALTER USERでパスワードを変更しましょう。

$ sudo -u postgres ./bin/pg_ctl restart -D/Library/PostgreSQL/9.1/data
$ psql -U postgres
postgres=# ALTER USER postgres WITH ENCRYPTED PASSWORD 'new password';
postgres=# \q

パスワードの変更が終わったら認証形式を元に戻しておきます。postgresユーザのパスワード忘れても何とか大丈夫なもんですね。

$ sudo vim /Library/PostgreSQL/9.1/data/pg_hba.conf
+ local   all             all                                     trust
- local   all             all                                     md5
$ sudo -u postgres ./bin/pg_ctl restart -D/Library/PostgreSQL/9.1/data
$ psql -U postgres
Password for user postgres:

一番最初に触ったデータベースがPostgreSQLだったので結構好きだったはずなんですけど、何年か使ってないくらいで綺麗サッパリ使い方を忘れていたので、ついでにちょっとだけリハビリです。

$ psql -U postgres
postgres=# \l      # データベース一覧
postgres=# \c db1  # データベース選択
db1=# \dt          # テーブル一覧
db1=# \d table1    # テーブルスキーマ
db1=# \d SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database; # 各テーブルのサイズ
db1=# \q

herokuのShared Databaseもpsqlから接続できたら良いのになと思う今日この頃です。あとせめて50MBくらい容量欲しい。

Leave a Reply

Your email address will not be published. Required fields are marked *