oracle對象的授權
Oracle授權
一、授權文法
GRANT文法:
1.顯式授權(直接將對象授權給使用者)
GRANT privilege [, ...] ON object [, ...] TO { Public| Group | Username|role} [WITH GRANT OPTION ]
例子grant read,write on directory dir_home to public
2.隱式授權(通過將角色授權給使用者)
GRANT role TO { Public| Group | Username|role}
例子grant connect,resource to oltp_user
文法說明:
privilege (許可權)
可能的許可權有:
SELECT--訪問聲明的表/視圖的所有列/欄位.
INSERT—對聲明的表插入所有列/欄位.
UPDATE—對聲明的表更新所有列/欄位.
DELETE--對聲明的表刪除所有列/欄位.
RULE --表/視圖上定義規則 (參見CREATE RULE語句).
ALL --賦予所有許可權.
object賦予許可權的對象名.
可能的對象是:
table(表)
view(視圖)
sequence(序列)
index(索引)
directory(目錄)
Public 代表是所有使用者的簡寫.
Group 將要賦予許可權的組GROUP.目前的版本中,組必須是用下面方法顯式建立的.
Username將要賦予許可權的使用者名稱.PUBLIC是代表所有使用者的簡寫.
role 某個角色,(如DBA connect resource)
WITH GRANT OPTION允許向別人賦予同樣許可權,被授權的使用者可以繼續授權.
描述
對象建立後,除了建立者外,除非建立者賦予(GRANT)許可權,其他人沒有訪問對象的許可權。
本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/
GRANT允許對象的建立者給某使用者或某組或所有使用者(PUBLIC)某些特定的許可權。不需要給建立者賦予(GRANT)對象的許可權,建立者預設擁有對象的所有許可權,包括刪除它的許可權。
說明
Oracle不允許在預存程序中使用未經顯式授權的對象.要使用另一使用者的對象,必須通過另一使用者給自己顯示授權。
因為Oracle在編譯預存程序時並不檢查定義者擁有的角色,只是檢查其被顯式授與權限,而DBA也是一種角色,所以即使是DBA,也需要顯式授權。
二、授權方式(顯式和隱式)
對象授權有兩種模式,顯式和隱式:
顯示授權和隱式授權的區別是:顯式授權是直接把對象授權給使用者,隱式授權是給使用者授予角色的方式來實現授權。
1.顯式授權是直接用GRANT語句進行授權。
文法:GRANT某種許可權TO使用者
如:
CONN USER1/Password
GRANT SELECT ON TABLE1 TO USER2; 將user1的表TABLE1的select許可權顯示授權給user2
GRANT UPDATE ON TABLE1 TO USER2; 將user1的表TABLE1的update許可權顯示授權給user2
註:用system/manager登入是沒法授權的,要使USER2使用者能在預存程序裡面訪問USER1使用者的表,必須以USER1使用者(該使用者有dba許可權)登入,然後授權就可以了。
SQL>grant select on USER1.MA_USERINFO to USER2
2.隱式授權則是通過ROLE來授權。
文法:GRANT某個角色TO使用者
如:
CONN USER1
GRANT SELECT ON TABLE1 TO ROLE1; 將USER1的表TABLE1的select許可權顯示授權給Role1
CONN SYSTEM 切換成管理員授予角色
GRANT ROLE1 TO USER2; 給USER2授與Role1的許可權。
三、收回許可權
文法:
顯式收權: revoke許可權from使用者; 從使用者中收回許可權
隱式收權: Revoke角色 from使用者; 從使用者中收回角色
例子:
revoke privilege1 from USER2; 從使用者中收回許可權
revoke select on table1 from User1; 收回查詢select表的許可權
revokeall on table1 from User1; 從使用者user1中收回表table1的所有許可權
revoke ROLE1 from USER2; 從使用者中收回角色
grant connect to xujin; 對使用者xujin授予connect角色
revoke connect from xujin 從使用者xujin收回connect角色
End
Author:51cto部落格 Oracle小混子