スキーマ、ロール作成
今回は、ロールを作成してみます。ロールにはログインロールとグループロールがあります。詳細ははじめにを参照して下さい。
スキーマの作成
スキーマを作成するにはpgAdminでスキーマを右クリックして「新しいスキーマ」を選択します。
ダイアログが表示されるので、名前にスキーマ名を入力してOKボタンを押します。

スキーマが作成されていることが確認できます。

テスト用テーブルの作成
初期に、pgAdminでテーブルを作成したことあるので、今回は省略します。今回は以下のSQLで作成されるテーブルをテストで使用します。
CREATE TABLE sch.tbl
(
idx integer primary k
);
ログインロールの作成
ログインロールを作成するにはログインロールを右クリックして「新しいログインロール」を選択します。
ロール名を入力します。

定義タブに移動してパスワードを入力して、OKボタンを押します。

これでログインロールが作成されます。
接続先の作成(usrログインロールで接続)
新しくログインロールを作成したので、作成したログインロールでデータベースに接続できるようにします。まず、右上の電源アイコンをクリックします。

表示されたダイアログで接続情報を入力し、OKボタンを押すと接続先が作成されます。

名前 | ・・・ | pgAdminに表示させる名前です。なんでも良いです。 |
ホスト | ・・・ | データベースが動作するPC名、またはIPアドレス。 |
Port | ・・・ | 接続ポート。通常はデフォルトで良いです。 |
ユーザ名 | ・・・ | ログインロールのロール名。 |
パスワード | ・・・ | ログインロールのパスワード。 |
pgAdminで作成した接続先を展開すると作成したテーブルが確認できます。

権限を制限
新しいログインロールを作成したとき、デフォルトの状態では、データベースの中身が見えてしまいます。以下のSQLを実行すると、権限を設定していないデータベースが見れなくなります。
対象のデータベースに合わせて、以下の postgres の部分を対象のデータベースに変更してください。
REVOKE ALL PRIVILEGES ON DATABASE postgres FROM public;
上記のSQL実行後は、作成した接続先も接続拒否されます。 
接続の許可
上記操作で、接続できなくなったので、まず以下のSQLで接続権限を与えます。対象のデータベースに合わせて、以下の postgres の部分を対象のデータベースに変更してください。
GRANT CONNECT ON DATABASE postgres TO usr;
接続ができるようになり、データベースの構造が見えますが、テーブルのデータをみようとすると拒否されます。 
データ抽出(SELECT)の許可
次にテーブルのデータを見れるようにします。以下のSQLでスキーマに使用権限を許可し、テーブルの参照権限を許可します。
GRANT USAGE ON SCHEMA sch TO usr;
GRANT SELECT ON TABLE sch.tbl TO usr;
上記SQLを実行することでテーブルのデータが参照できるようになります。 

データ抽出以外のテーブル操作の許可
データ参照以外も上記とおなじようなSQLで許可できるのですが、今回はpgAdminで許可を与えてみます。テーブルを右クリックして「プロパティ」を選択します。

表示されたダイアログで権限を選択します。
対象となるロールを選択し、許可したい操作にチェックを付けてOKボタンを押します。

スキーマ使用以外のスキーマの許可
スキーマを右クリックして、プロパティを選択して、表示されたダイアログで権限を選択し、ロールを選択し、追加したい操作にチェックを付けてOKボタンを押します。

接続以外のデータベースの許可
データベースを右クリックして、プロパティを選択して、表示されたダイアログで権限を選択し、ロールを選択し、追加したい操作にチェックを付けてOKボタンを押します。

新規にデータベース作成、ロール作成など特別な権限
ロールにデータベース作成許可、ロール作成許可などを行う場合、ロールを右クリックして、プロパティを選択して、表示されたダイアログでロール特権を選択して、追加したい権限をチェックしてOKボタンを押します。
テーブルの権限などはロールメンバーを設定することで共有できますが、ロール特権は共有できません。個別に設定する必要
があります。

ページのトップへ戻る