S-JIS[2007-09-22/2012-06-18] 変更履歴

権限の付与・奪取

Oracle上では、権限が無いと何も出来ない。

権限を付与するにはGRANTを使う。与えた権限を削除するにはREVOKEを使う。

GRANT  権限 TO   相手;
REVOKE 権限 FROM 相手;
CONNECT
RESOURCE
ユーザーを作成したら最初に与えるロール  
SELECT SELECTの実行権限  
INSERT INSERTの実行権限  
UPDATE UPDATEの実行権限  
DELETE DELETEの実行権限  
EXECUTE 関数の実行権限  
CREATE MATERIALIZED VIEW マテリアライズド・ビューの作成権限  
QUERY REWRITE ファンクション索引の作成権限  
DBA 管理者権限(dbaで始まるテーブルにアクセスできるようになる) 2012-06-18

個別のテーブルの権限

scottユーザーのempテーブルを、hishidamaユーザーから見られるようにする例。

scottユーザーにて:

SQL> grant select,insert,update,delete on emp to hishidama;

権限付与が成功しました。

hishidamaユーザーにて:

SQL> select ename from scott.emp;

ENAME
----------
SMITH
ALLEN
〜

シノニムを作成すると、いちいち「scott.」を付けなくてもよくなる。


全テーブルのアクセス権限

“どんなテーブルにもアクセスできる権限”というものもある。セキュリティー的にはちょっと危険?

sysユーザー(as sysdbaでログインするユーザー)にて:

SQL> grant select any table to hishidama;

権限付与が成功しました。

個別のテーブルへのアクセス権限を保持するロール

ロールを作って個別のテーブルへのアクセス権限を付与しておき、そのロールを各ユーザーへ付与することによってテーブルへのアクセス権限を渡すことが出来る。

sysユーザー(as sysdbaでログインするユーザー)にて:

SQL> create role emp_access;

ロールが作成されました。

SQL> grant select,insert,update,delete on scott.emp to emp_access;

権限付与が成功しました。

SQL> grant emp_access to hishidama;

権限付与が成功しました。

※この場合、hishidamaユーザーは再ログインしないと権限が有効にならない模様


関数の実行権限

特定の関数(下記の例ではscott_emp_count())の実行権限を付与する例。

関数を作ったユーザーにて:

SQL> grant execute on scott_emp_count to hishidama;

権限付与が成功しました。


全サブルーチン(関数・プロシージャ)の実行権限を付与する例。

sysユーザー(as sysdbaでログインするユーザー)にて:

SQL> grant execute any procedure to hishidama;

権限付与が成功しました。

SQLメモへ戻る / Oracle目次へ戻る / 技術メモへ戻る
メールの送信先:ひしだま