Oracle 11g學習筆記--特權

Oracle 11g學習筆記–特權

系統特權

系統特權允許用戶在數據庫中執行特定的操作;

常用的系統特權如表

系統特權 允許執行的操作
create session 連接到數據上
create sequence 創建序列
create synonym 創建同名對象
create table 在用戶模式中創建表
create any table 在任何模式中創建表
drop table 刪除用戶模式中的表
drop table 刪除任何模式中的表
create procedure 創建存儲過程
execute any procedure 執行任何模式中的存儲過程
create user 創建用戶
drop user 刪除用戶
create view 創建視圖

註釋:
序列:一系列數字,通常用來自動填充主鍵列。
視圖:視圖是存儲的過程,可以用來對多個表和多列進行訪問,然後就可以查詢表一樣查詢視圖;

--授權
--with admin option 的意思是授權用戶可以繼續將自己的權限授予其他用戶
grant create session, execute any procedure to uer_name with admin option;
--授權給所有人
grant create session to public;

檢查授予用戶的系統特權

select *from user_sys_privs;

撤銷用戶的系統特權

--從user_name上撤銷create table的特權
revoke create table from user_name;

對象特權

對象特權允許用戶對數據庫對象執行的特定操作,如DML語句;

向用戶授予對象特權

--授權給user_name,允許對products表進行select, insert, update 等操作;
grant select , insert, update on store.products to user_name;
--將更新t表column_name的權限給u2;
grant update(column_name) on u1.t to u2;

檢查已授予的對象特權

通過查詢user_tab_privs_made可以檢查某個用戶對哪些表向其他用戶開放了那些對象特權;

user_tab_privs_made的部分列

類型 說明
grantee varchar2(30) 該特權所授予的用戶
table_name varchar2(30) 所授予的特權所操作的對象
grantor varchar2(30) 授權者
privilege varchar2(30) 對該對象授予的特權
grantable varcahr2(3) 特權所授予的用戶是否可以將這種特權在授予給其他用戶,該值等於yes或者no
hierarchy varchar(3) 特權是否構成層次關係。該值等於yes或者no

檢查已接受的對象特權
通過user_tab_privs_recd表可以查詢某個用戶被授予了哪些表上的哪些特權;

類型 說明
owner varchar(30) 擁有該對象的用戶
table_name varchar(30) 所授予的特權所操作的對象名
grantor varchar(30) 授權者
privilege varchar(40) 對該對象授予的特權
grantable varchar(3) 特權所有與的用戶是否可以將這種特權再授予其他用戶,該值等於yes或no
hierarchy varchar(3) 特權是否構成層次關係,該值等於yes或no

通過user_col_privs_recd可以檢查某個用戶被授予了哪些列的對象特權。

類型 說明
owner varchar(30) 擁有該對象的用戶
table_name varchar(30) 所授予的特權所操作的對象名
column_name 所授予的特權所操作的列名
grantor varcahr(30) 授權者
privilege varchar(40) 對該對象授予的特權
grantable varchar(3) 特權所授予的用戶是否可以將這種特權再授予給其他用戶


使用對象特權
當一個用戶要訪問另一個用戶的表時,需要加上用戶名:

select *from user_name.table_name;

同名對象

所謂的同名對象就相當於代號,如你可能訪問某個用戶的表同上面的方式一樣;但是創建了同名對象之後,你就可以不用輸入用戶名了,直接輸入別名就好了,使用方法如下:

注意:此處,假設用戶user1要訪問user2的friends 表, 當然前提是你得有訪問該用戶表的權限;
●授權

connect sys/admin as sysdba;
grant create synonym to user1;

●創建同名對象

connect user2/password
create synonym his_friends for user2.frineds;
select * from his_friends;

●銷燬同名對象

drop synonym his friends;

公共同名對象

我們也可以爲表創建公共同名對象,在創建公共同名對象之後,所有的用戶都可以看到這個同名對象。

使用步驟:
●授權

connect sys/admin as sysdba
grant create public synonym to user1;

●創建公共同名對象

connect user1/admin
create public synonym his_friends for user1.friends;

●使用(注意:此時user2必須有訪問user1的friends表的權限)

connect user2/admin
select *from his_friends;

撤銷用戶的對象特權

同撤銷其他權限一樣,依然使用revoke

connect user1/admin
revoke select on user2.table_name from user1;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章