まず、postgresql をインストールした時に設定している管理者ユーザー権限が必要。
ここが一番難しいようにも思うけど...
linux で rpm や deb パッケージでインストールしたならば postgres ユーザーが OS に登録されるので、OSの管理者権限でログインして
# su -u postgres
$ psql ...
とか
$ sudo -u postgres psql ...
のように起動できなければ、たぶん道は無いと思う。
Windows の場合は postgers ユーザー権限で実行するとか、どうやればいいんでしょうね?
前提として、インストール時の初期設定で postgres のデータベースパス(環境変数なら PGDATA の値)を探し出して、 pg_hba.conf ファイルを見つけて、認証方法の設定が trust (OSユーザー認証) になっていないと上の方法で postgres にアクセスできませんので確認してください。
鶏卵的には pg_hba.conf は、psql でデータベースに接続された状態で
=# SHOW hba_file;
を実行すれば、どこの pg_hba.conf ファイルを見ているか判ります。ログインできれば。
- linux では /var/postgres とか /var/lib/postgres あたりがありがち
- brew on Mac では /usr/local/var/postgres でした
- windows は... たぶんインストーラーが最後に表示していたと思うよ
ユーザーロール作成
$ create user -P <user name>
$ psql postgres
=# ALTER ROLE "<user name>" WITH LOGIN SUPERUSER ENCRYPTED PASSWORD '<user password>';
管理者権限で、ログイン可能で、暗号化パスワード
ついでに今ログインしているユーザーのパスワードも付けておきます。
=# ALTER ROLE "<default postgres>" WITH ENCRYPTED PASSWORD '<password>';
認証方法の変更
pg_hba.conf の変更
...
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
METHOD を ident から md5 に変更
postgres の再起動
pg_ctl
や service postgres
や /etc/init.d/postgres
などで postgresql の再起動をして、ログインできるか試します。
$ psql -U <user name> -h localhost -W postgres
Password:
ユーザーのパスワードでログインきれば OK です。