PostgreSQL8.4.4
購入した本に従って、
①postgresユーザでない一般ユーザ作成
②ユーザでログイン
③DB作成
をしたいのだが、②で
FATAL: role "ユーザ名" is not permitted to log in
というエラーとなる。
postgresqlのSQLリファレンスを見ると・・・
LOGIN/NOLOGIN
というオプションがあることが判明!!
「これらの句により、ロールがログイン可能かどうか、つまり、そのロールをクライアント接続時にセッションを認証するための名前として使用することができるかどうかが決まります。 LOGIN属性を持つロールはユーザとみなすことができます。この属性を持たないロールは、データベース権限を管理する際に有用ですが、普通の意味ではユーザとはいえません。指定されなかった場合のデフォルトはNOLOGINです。ただし、CREATE ROLEが別名のCREATE USERで呼び出された場合は例外です。 」
だそうです。
LOGINオプション付けたら上手くいった。
「postgres」ユーザで「postgres」DBにログインした後であれば
\c "postgres(DB名)" "ユーザ名"
コマンドプロンプトからであれば
psql -U "ユーザ名" "postgres(DB名)"
でOK。
ちなみに
「CREATE ROLEは、PostgreSQLデータベースクラスタに新しいロールを加えます。ロールとは、自身でデータベースオブジェクトを所有することができ、データベース権限を持つことができる実体のことです。ロールは、使用状況に応じて"ユーザ"、"グループ"、もしくは、その両方であるとみなすことができます。」
と。へぇ。
今日は疲れたからここまで。
なかなか進まないなぁ。。。