PostgreSQLスキルアップノート(自己啓発のための個人サイト)
PostgreSQLのロールとは?
【一覧に戻る】
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■■■■ PostgreSQL スキルアップノート
■■■■
■◆■■ PostgreSQLのロールとは?
■■■■
■■■■
■■■■ 2013/02/03
■■■■ 使用環境:PostgreSQL9.1.7 (CentOS6.2)
(C) 2013 ohdb
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
★自己都合により実機確認は9.1、マニュアルへのリンクは9.2としています。ご了承下さい。
【マニュアル】
第 20章データベースロール→●[マニュアル]
CREATE ROLE→●[マニュアル]
CREATE USER→●[マニュアル]
createuserコマンド→●[マニュアル]
【記事】
−
■1■ ロールとは?
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
PostgreSQLでの「ロール」とは、一言でいえばユーザやグループ※の実体になるもの。
したがってどちらかといえば実装や仕組み上の観点で用いる語だと思われるが、実際には
区別なく用いられることが多い。
ロールは「ユーザ」、「グループ※」の2つの用途に用いられる。
・ユーザの用途に使用したい場合は、(普通は)「LOGIN属性を持つロール」を作る。
・グループの用途に使用したい場合は、(普通は)「LOGIN属性を持たないロール」を作る。
したがって「ユーザはロール」であるが、「ロールはユーザのこと」と言ってしまうと語弊がある。
※グループはユーザを論理的にまとめ、権限管理を容易にするための方法(詳細別記)
データベースロール→●[マニュアル]
------------------------------------------------------------------------------------------------
ロールの概念には、"ユーザ"という概念と"グループ"という概念が含まれます。
ロールは、その設定方法に応じて、データベースユーザ、またはデータベースユーザのグループとみなすことができます。
ロールはデータベースオブジェクト(例えばテーブル)を所有することができます。
ロールは、どのオブジェクトに誰がアクセスできるかを制御するために、それらのオブジェクトに対しての権限を他のロールに割り当てることができます。
更に、ロールのメンバ資格を他のロールに与えることもできます。
そのため、メンバとなったロールは別のロールに割り当てられた権限を使用することができます。
------------------------------------------------------------------------------------------------
■2■ ロールのできる場所
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ロールはデータベースの中に作成されるのではなく、データベースクラスタに作成される。
したがって、作成したロールは全DB共通で使え、DBごとに作成する必要はない。
■3■ その他
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【参考】8.1から登場した「ロール」
8.1で「データベースユーザ」と「グループ」という明確に分かれていた2つを統合し「ロール」という概念に統一した。
CREATE USERとCREATE ROLE
CREATE ROLEは8.1から登場し、代わってCREATE USERがCREATE ROLEのエイリアスになった。
ただし一部のデフォルト動作が以下の通り両者で違っている。
>唯一の違いは、CREATE USERという名前でコマンドが呼び出されると、デフォルトでLOGINになり、
>CREATE ROLEという名前でコマンドが呼び出されると、デフォルトでNOLOGINとなる点です。
以上