PostgreSQL 8.1 以降は少なくとも psql での管理はやりやすくなってる

気がする。ごめんなさいね、古い話でホントに。(ベンチとか取ってないんでその辺は知りません。)

デフォルト DB が postgres になってるのも role に一本化されているのも、メリットの方が大きい。

例えばデフォルト DB の変更は

psql -U postgres

だけで使い始められるってことを意味する。template1 とか書かなくていいし、template1 を誰かに使われてて作業できませんて可能性も減っていい感じ。template1 は使われてるかもしれないから psql -l でデータベース一覧を取得して適当なやつに繋いで…とか余計なことは全然考えなくていい。

また role は \du だけでこの出力を得られる。

   Role name   | Superuser | Create role | Create DB | Connections | Member of
---------------+-----------+-------------+-----------+-------------+-----------
 postgres      | yes       | yes         | yes       | no limit    |
 web           | no        | no          | no        | no limit    |
 www           | no        | no          | no        | no limit    | {web}

なんだこれとか言っちゃダメ(^^; ただのサンプルだから。これの何がいいって、role の一覧で

  • user
  • group
  • どの user がどの group に属しているのか

全部分かるってこと。しかも ID じゃなくて名前で分かる。スバラシイ。楽ちんじゃないか。これでデータベースの権限管理をまともにやる気になれますよ?

psql -U postgres -t -A -F '|' -c '\du' | awk -F \| '{print $1, $6}'

なんて書くと

postgres
web
www {web}

なんてものが採れます。ふむふむ。(connections の列の中身に空白が入っているのでセパレータをいじってます。この辺はお好きにどうぞ。)

More