oracle grant
不論授予何種權限,每條授權(grant)語句總是由三部分組成:
1) 接受者部分是准備獲得權限的一個或多個用戶的列表。
2)關鍵字權限部分由grant后跟一種或多種權限組成。如果在同一條grant語句中有多個權限,權限之間用逗號分隔。
3) 表名部分由關鍵字o n起頭並列出准備在其上授權的表。
看下面的詳細介紹,主要是介紹如何把添加、刪除、修改、查詢四種權限授予用戶,如下:
一、insert
insert權限允許在其他用戶的表中建立行。語句grant insert on sample_a to public;允許所有用戶在sample_a中建立新的行。Oracle允許在單條grant語句中授多個權限,SQL語句grant insert,select on sample_a to public;等價於兩個語句:grant select on sample_a to public;語句和grant insert on sample_a to ublic;語句。
二、update
update權限允許其他用戶修改非自己表中的數據。語句grant update on sample_a teplownd;允許用戶teplownd修改表sample_a中的信息。
三、select
select權限允許用戶查看其他用戶表中的內容。語句grant select on sample_3 to public;將允許所有用戶瀏覽表sample_3中的內容,而語句grant select on sample_3 to opsrosenberg
abbeyms;則只允許兩個用戶查看表sample_3中的內容。注意,當多個用戶接受授權時,用戶名之間要用逗號分隔。
提示以public為授權對象時,所有數據庫用戶都獲得指定的權限。如果用戶的數據庫有15000個用戶,則單獨授權就需要15000次(每個用戶一次),而授權給public,一次即可。
四、delete
刪除權限允許其他用戶刪除指定表的信息行。此權限非同小可,因此我們建議小心使用。下面是一個實際例子:如果一個用戶連接到產品數據庫,而他還以為他連接的是測試數據庫。他發布了一條命令delete from people_master;並且Oracle做出了反應12003 rows delet.ed在退出SQL * Plus后,下一個程序訪問people_master查看Rick Bower的記錄,會被告知記錄不存在。
命令grant delete,update,select on sample_a to public;對所有數據庫用戶給出指明的權限,而命令grant select,update,insert,delete on sample_a to teplownd,greerw;只允許用戶teplownd和greerw對表sample_a做命令中所列出的動作
授權語句
--select * from dba_users; 查詢數據庫中的所有用戶
--alter user TEST_SELECT account lock; 鎖住用戶
--alter user TEST_SELECT account unlock; 給用戶解鎖
--create user xujin identified by xujin; 建立用戶
--grant create tablespace to xujin; 授權
--grant select on tabel1 to xujin; 授權查詢
--grant update on table1 to xujin;
--grant execute on procedure1 to xujin 授權存儲過程
--grant update on table1 to xujin with grant option; 授權更新權限轉移給xujin用戶,許進用戶可以繼續授權;
--收回權限
--revoke select on table1 from xujin1; 收回查詢select表的權限;
--revoke all on table1 from xujin;
/*grant connect to xujin;
revoke connect from xujin
grant select on xezf.cfg_alarm to xujin;
revoke select on xezf.cfg_alarm from xujin;*/
--select table_name,privilege from dba_tab_privs where grantee='xujin' 查詢一個用戶擁有的對象權限
--select * from dba_sys_privs where grantee='xujin' 查詢一個用戶擁有的系統權限
--select * from session_privs --當錢會話有效的系統權限
--角色
--create role xujin1;--建立xujin1角色
--grant insert on xezf.cfg_alarm to xujin1; 將插入表的信息
--revoke insert on xezf.cfg_alarm from xujin1; 收回xujin1角色的權限
--grant xujin1 to xujin ; 將角色的權限授權給xujin;
-- create role xujin2;
--grant xujin1 to xujin2; 將角色xujin1授權給xujin2;
--alter user xujin default xujin1,xujin2; 修改用戶默認角色
-- DROP ROLE xujin1;刪除角色1;
--select * from role_sys_privs where role=xujin1;
--查看許進1角色下有什么系統權限;
--select granted_role,admin_option from role_role_privs where role='xujin2';
--查看xujin1角色下面有什么角色權限
--select * from role_sys_privs where role='xujin2';
--select table_name,privilege from role_tab_privs where role='xujin1';
--select * from dba_role_privs where grantee='xujin' --查看用戶下面有多少個角色;