在Oracle數(shù)據(jù)庫中,權(quán)限用于控制用戶存取,主要是為了保證系統(tǒng)安全和數(shù)據(jù)安全。根據(jù)系統(tǒng)管理方式的不同,可將權(quán)限分為系統(tǒng)權(quán)限與對象權(quán)限兩類。
- 系統(tǒng)權(quán)限:能夠存取數(shù)據(jù)庫的權(quán)限
- 對象權(quán)限:操作數(shù)據(jù)庫對象的內(nèi)容
模式
這里模式指對象的集合,包括表、視圖、索引等。
系統(tǒng)權(quán)限
Oracle數(shù)據(jù)庫預(yù)定義的泛指權(quán)限,即對某一類對象的權(quán)限。DBA擁有最高的系統(tǒng)權(quán)限,典型的包括:
- 創(chuàng)建用戶
- 刪除用戶
- 刪除表
- 備份表
等等
創(chuàng)建用戶
DBA使用 CREATE USER 語句來創(chuàng)建用戶。
CREATE USER user
IDENTIFIED BY password;
例如:
SQL> CREATE USER scott
2 IDENTIFIED BY tiger;
用戶的權(quán)限系統(tǒng)
一旦一個用戶被創(chuàng)建了,DBA就可以為這個用戶授予特殊的系統(tǒng)權(quán)限:
GRANT privilege [, privilege...]
TO user [, user...]
一個應(yīng)用開發(fā)者可能有下列的系統(tǒng)權(quán)限:
- 創(chuàng)建會話
- 創(chuàng)建表
- 創(chuàng)建序列
- 創(chuàng)建視圖
- 創(chuàng)建過程
角色
在數(shù)據(jù)庫中,為便于對用戶及權(quán)限進行管理,可以將一組具有相同權(quán)限的用戶組織在一起,這一組具有相同權(quán)限的用戶就稱為角色(Role)。
CREATE ROLE 【1】
GRANT DBA TO user_test;
改變密碼
DBA 創(chuàng)建用戶賬號,并初始化一個密碼。用戶可以使用ALTER USER語句來改變密碼。
ALTER USER scott
IDENTIFIED BY lion;
對象權(quán)限
對某一個對象的權(quán)限。各種對象的權(quán)限是不同的。對象的擁有者具有該對象的所有權(quán)限,并且可以將該對象的部分權(quán)限授權(quán)給別人。
GRANT object_priv [(columns)]
ON object
TO (user|role|PLULIC)
[WITH GRANT OPTION];
授予對象權(quán)限
授予在EMP表上進行查詢的權(quán)限:
SQL > GRANT select
ON emp
TO sue, rich;
為用戶和角色授予Dept表上某些列的修改權(quán)限:
SQL > GRANT update(dname, loc)
ON dept
TO scott, manager;
驗證授權(quán)情況
| 數(shù)據(jù)字典表 | 描述 |
|---|---|
| ROLE_SYS_PRIVS | 授予角色的系統(tǒng)權(quán)限 |
| ROLE_TAB_PRIVS | 授予角色的表權(quán)限 |
| USER_ROLE_PRIVS | 授予當(dāng)前用戶的角色 |
| USER_TAB_PRIVS_MADE | 在用戶對象上所授予的系統(tǒng)權(quán)限情況 |
| USER_TAB_PRIVS_RECD | 授權(quán)給用戶的對象權(quán)限 |
| USER_COL_PRIVS_MADE | 在用戶對象的列上所授予的對象權(quán)限情況 |
| USER_COL_PRIVS_RECD | 授權(quán)給用戶的某些列的對象權(quán)限 |
回收權(quán)限
使用REOVKE來回收授權(quán)給其他用戶的權(quán)限。如果設(shè)置了CASCADE CONSTRAINTS ,那么將同時回收該用戶通過 WITH GRANT OPTION 語句授權(quán)給其他用戶的權(quán)限。
REVOKE {privilege [, privilege...]|ALL}
ON object
FROM {user[, user...] | role | PUBLIC}
[CASCADE CONSTRAINTS];
【1】詳細(xì)設(shè)置可以參考Oracle 官方文檔
賦予/回收權(quán)限生效
賦予/回收權(quán)限后可以立刻在session中生效。