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;
権限付与が成功しました。