PostgreSQL 独自のユーザー、グループの両方を兼ねた “ロール” という概念があるようです。これは PostgreSQL 8.1 からできたもので、それ以前は普通にユーザーとグループだったようです。
データベースロールの属性
データベースロールにはいくつかの属性を設定できるようです。
| 権限 | デフォルト | 説明 |
| スーパーユーザー権限 | false | PostgreSQL の権限検査を受けない権限、全権限をもったユーザ権限。*1 |
| ログイン権限 | false | データベースにログインするための権限 |
| ロール作成 | false | 他のロールを作成する権限 |
| データベース作成 | false | データベース作成に必要な権限 |
| ロールの継承 | true | |
| パスワード | なし | データベース接続時の認証に使われるパスワード |
| パスワードの有効期限 | 無制限 | パスワードの有効期限 |
| 最大接続数 | 無制限 | 該当のロールで同時にデータベースにアクセスできる最大数 |
データベースロールとシステムのユーザーについて
PostgreSQL のデータベースロールと、Linux 側のユーザーは全く別のもの。ただし、以下にあるように、同名にしておくと便利。
多くのアプリケーション(createuserおよびpsqlを含む)では、オペレーティングシステムの現在のユーザ名をデフォルトと仮定します。 したがって、ロールとオペレーティングシステムのユーザの組み合わせ間で名前を一致させておくと便利です。
データベースロールの作成 CREATE ROLE
データベースロールを作成する前に、同名のシステムユーザーを作成しておきます。
[root@centos ~]# useradd centos [root@centos ~]# passwd centos
データベースロールの作成には Create Role コマンドを使います。Create Role は SQL コマンドなので、クライアントプログラムである psql でデータベースに接続して行います。
[root@centos ~]# su - postgres
-bash-3.2$ psql
Welcome to psql 8.3.7, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
postgres=# create role centos with login password 'パスワード';
CREATE ROLE
postgres=# \du
List of roles
Role name | Superuser | Create role | Create DB | Connections | Member of
-----------+-----------+-------------+-----------+-------------+-----------
centos | no | no | no | no limit | {}
postgres | yes | yes | yes | no limit | {}
(2 rows)
データベースロールの属性の変更 ALTER ROLE
ロールの属性変更には、基本的にスーパーユーザー権限かロール作成権限を持ったユーザーが行う必要がある。*2
下の例では、作成した centos ロールに createdb 権限を付与した。付与する権限はスペースで区切ることで、複数付与することもできる。
postgres=# alter role centos createdb;
ALTER ROLE
postgres=# \du
List of roles
Role name | Superuser | Create role | Create DB | Connections | Member of
-----------+-----------+-------------+-----------+-------------+-----------
centos | no | no | yes | no limit | {}
postgres | yes | yes | yes | no limit | {}
(2 rows)
*1
データベースの初期化を行ったユーザー(ロール)が最初のスーパーユーザーとなる。デフォルトでは postgres ユーザー(ロール)
*2
一般ユーザーは、権限の削除と自分のパスワード変更のみ可能(権限の付与ができない)
参考にしたサイト







