SQL DCL:ユーザー、ロール、権限

ユーザーとは?

Oracleデータベースへログインするアカウント
・ ユーザ名
・ パスワード
・ 表領域
・ 表領域サイズ
・ プロファイル
を設定できる。

作成

CREATE USER (ユーザー名) IDENTIFIED BY (パスワード)
オブジェクト作成先表領域
[ DEFAULT TABLESPACE (デフォルト表領域名) ]
※省略した場合、SYSTEM表領域に作成される

使用する一時表領域
[ TEMPORARY TABLESPACE (一時表領域名) ]
※省略した場合、SYSTEM表領域が使用される

表領域割当制限
[ QUOTA (サイズ) ON (表領域名) ]
※省略した場合、割り当てサイズ=0=ユーザはオブジェクトを作成できない

[ PROFILE (プロファイル名) ]
※省略した場合、DEFAULT プロファイルが割り当てられる
;

デフォルトで作成されるユーザー

Oracle DBCA使用方法/デフォルトで作成されるユーザー一覧」参照

削除

DROP USER (ユーザー名)

ログイン中のユーザーは削除できない
ユーザーが所有している(=スキーマ内の)オブジェクトも削除される

権限

オブジェクト権限

他スキーマのオブジェクトに対する操作権限
他スキーマの所有者が、別スキーマユーザーに対して付与

オブジェクト権限名 ビュー 順序 プロシージャ 内容
SELECT
INSERT
UPDATE
DELETE
ALTER
INDEX
REFERENCES 参照整合性制約を作成
EXECUTE PL/SQLプログラムを実行
READ
WRITE
ディレクトリオブジェクト

GRANT (権限名) ON (オブジェクト名) TO ユーザー名/ロール名

SQL> Grant Select, Insert, Update, Delete On tbl_test To user_test;
※ユーザー:user_testに対して、テーブル:tbl_testに関するSELECT~の権限を付与

SQL> Grant Execute On func_test To user_test;
※ユーザー:user_testに対して、関数:func_testに関する実行権限を付与

オブジェクト(表やビュー)作成(CREATE)時はそのオブジェクトの権限が全て付与される

システム権限

DBMSに対する操作権限
DBAがユーザーに権限を付与する

システム権限名 CREATE ALTER DROP 説明
ANY INDEX 任意のスキーマ内の索引
ANY PROCEDURE 任意のスキーマ内のプロシージャ
ANY SEQUENCE 任意のスキーマ内の順序
ANY SYNONYM 任意のスキーマ内の別名
ANY TABLE 任意のスキーマの表
ANY TRIGGER 任意のスキーマ内のトリガー
ANY VIEW 任意のスキーマのビュー
CLUSTER 任意のスキーマ内のクラスタ
DATABASE LINK プライベートデータベースリンク
PROCEDURE EXECUTE 自スキーマ内のプロシージャ
PROFILE プロファイル
PUBLIC SYNONYM パブリックシノニム
ROLE ロール
SEQUENCE SELECT 自スキーマ内の順序
SYNONYM 自スキーマ内の別名
PUBLIC SYNONYM パブリックシノニム
TABLE SELECT
INSERT
UPDATE
DELETE
LOCK
COMMENT
自スキーマの表
SELECT~DELETE はVIEWにも有効
VIEW 自スキーマのビュー
TABLESPACE 表領域
TRIGGER 自スキーマのトリガー
USER ユーザ
SESSION セッションのパラメータ
ANALYZE ANY 表・索引を分析する権限
AUDIT ANY スキーマオブジェクトを監査する権限
管理ユーザー
SYSDBA SYSOPER + オブジェクトの作成など何でも出来る権限
SYSOPER DBの起動・停止。データディクショナリへはアクセス不可

・INSERT ANY/SELECT ANY/UPDATE ANY/DELETE ANY
・CREATE/CREATE ANY/DROP
・ROCK
・SYSDBA/SYSOPER データベースの起動/停止

GRANT (権限名) TO ユーザー名/ロール名

SQL> Grant Select Any Table To user_test;
※ユーザー:user_testに対して、全テーブルに関するSELECT権限を付与

SQL> Grant Execute Any Procedure To user_test;
※ユーザー:user_testに対して、全関数の実行権限を付与

権限削除

REVOKE 権限 FROM 相手;

SQL> Revoke Select, Insert, Update, Delete On tbl_test To user_test;
※ユーザー:user_testに対して、テーブル:tbl_testに関するSELECT~の権限を削除

フラッシュバック表実行権限

・FLASHBACK TABLEシステム権限
 or
・FLASHBACK ANY TABLEシステム権限
・対照の表へのSELECT、ALTER、INSERT、DELETEオブジェクト権限

役割

権限をグループ化したもの
ロールに割り当てた権限はPL/SQL実行時には適用されない
ROLE
ユーザーに対して権限の集合を付与
OSのアカウントグループ
ユーザーの集合に対して権限を付与

定義済みロール

ロール名 説明 権限
CONNECT 一般ユーザ用
DB接続、表やビューの作成等
・CREATE SESSION
RESOURCE 開発者用
プロシージャやトリガの作成等
CONNECTロールも別途必要
・CREATE CLUSTER
・CRETAE INDEX TYPE
・CREATE SEQUENCE
・CREATE PROCEDURE
・CREATE TRIGGER
・CREATE TABLE
DBA 管理者用
ADMIN OPTION付きの全てのシステム権限
EXP_FULL_DATABASE 全データベースエクスポート実行権限
IMP_FULL_DATABASE 全データベースインポート実行権限
RECOVERY_CATALOG_OWNER リカバリカタログのメンテナンスができる権限
CONNECT、RESOURCEロールも別途必要
MGMT_USER EM利用
定義

Create Role role_test;
※ロール:role_test作成(権限無し)
Grant Select, Insert, Update, Delete On tbl_test To role_test;
※ロール:role_testに対して、テーブル:tbl_testに関するSELECT~の権限を付与
Grant role_test To user_test;
※ユーザー:user_testに対して、ロール:role_testの権限を付与
Grant (権限) To (ユーザー/ロール) WITH GRANT OPTION
オブジェクト権限の付与
付与された権限を付与できる権限の付与
Grant (権限) To (ユーザー/ロール) WITH ADMIN OPTION
システム権限の付与
付与された権限を付与できる権限の付与

SQL

次の記事

SQL DDL:テーブル定義