13.管理許可權(筆記)
13.管理許可權
建立使用者時,使用者沒有任何許可權,也不能執行任何操作.如果使用者要執行特定的資料庫操作,必須為其授予系統許可權.如果使用者要訪問其他方案的物件,則必須為其授予物件許可權.
許可權(Privilege)是指執行特定型別SQL命令或訪問其他方案物件的權利,許可權包括系統許可權和物件許可權兩種型別.系統許可權(System Privilege)是指執行特定型別SQL命令的權利,它用於控制使用者可以執行的一個或一組資料庫操作.常用的系統許可權:
CREATE SESSION 連線到資料庫
CREATE TABLE 建表
CREATE VIEW 建立檢視
CREATE PUBLIC SYNONYM 建立同義詞
CREATE SEQUENCE 建立序列
CREATE PROCEDURE 建立過程,函式和包
CREATE TRIGGER 建立觸發器
CREATE CLUSTER 建立簇
CREATE TYPE 建立物件型別
CREATE DATABASE LINK 建立資料庫鏈
另外,oracle還提供了一類ANY系統許可權,當使用者具有該類系統許可權時,可以在任何方案中執行相應操作.如果使用者具有SELECT ANY TABLE系統許可權,那麼使用者可以查詢任何方案的表.
需要注意,當初始化引數O7_DICTIONARY_ACCESSIBILITY被設定為FALSE時,除了SYSDBA和DBA使用者外,即使使用者具有SELECT ANY TABLE許可權,也不能訪問資料字典基表和資料字典檢視DBA_XXX.
物件許可權(Object privilege)是指訪問其他方案物件的權利,它用於控制使用者對其他方案物件的訪問.
管理系統許可權
授予系統許可權
GRANT system_priv[,system_priv,…]
To {user | role | PUBLIC},[,{user | role | PUBLIC} ] …
[WITH ADMIN OPTION];
System_priv用於指定系統許可權.授權使用者組PUBLIC,在授予系統許可權時可以帶有WITH ADMIN OPTION選項,帶有該選項後,被授權的使用者,角色還可以將相應的許可權授予其他使用者,角色.需要注意,系統許可權UNLIMITED TABLESPACE不能授予角色.
CRANT CREATE SESSION,CREATE TABLE TO blake WITH ADMIN OPTION;
GRANT GREATE VIEW TO blake;
顯示系統許可權.
1,顯示所有系統許可權.
SELECT name FROM system_privilege_map;
2,顯示使用者或角色所具有的系統許可權.
查詢資料字典檢視DBA_SYS_PRIVS,可以顯示所有使用者或角色所具有的系統許可權.透過查詢資料字典檢視USER_SYS_PRIVS,可以顯示當前使用者所具有的系統許可權.
SELECT * FROM dba_sys_privs WHERE GRANTEE=’BLAKE’;
GRANTEE用於標識許可權擁有者(使用者或角色),PRIVILEGE用於標識系統許可權.ADMIN_OPTION用於標識系統許可權傳授選項,其中YES表示可以轉授該系統許可權,NO表示不能轉授該系統許可權.
3,顯示當前會話所具有的系統許可權.
透過查詢資料字典檢視session_privs,可以顯示當前會話所具有的系統許可權.
SELECT * FROM session_privs;
收回系統許可權
收回系統許可權一般是由DBA完成的,如果要以其他使用者身份收回系統許可權,要求該使用者必須具有相應系統許可權及其轉授系統許可權選項(WITH ADMIN OPTION).收回系統許可權使用REVOKE命令完成.
REVOKE system_priv[,system_priv] ….
FROM {user | role | PUBLIC}[ , { user | role | public}]…
需要注意的是,系統許可權不會被級聯收回.
管理物件許可權.
物件許可權是指訪問其他使用者方案物件的權利,在oracle資料庫中,使用者可以直接訪問其方案物件,單如果要訪問其他使用者的方案物件時,必須具有相應的物件許可權.物件許可權包括ALTER ,DELETE,EXECUTE,INDEX,INSERT,REFERENCES,SELECT和UPDATE等8種.預設情況下,直接授予物件許可權時,將訪問所有列的許可權都授予使用者.如果只允許使用者更新某些列,必須授予列許可權.只能在INSERT,UPDATE和REFERENCES上授予列許可權.
授予或收回物件許可權時,可以使用AL L選項,執行GRANT ALL命令後,會將物件上的所有許可權授予使用者,而執行REVOKE ALL命令則可以收回物件上的所有許可權.如果不同方案表之間具有REFERENCES關係,使用REVOKE ALL收回主表上的所有物件許可權時需要帶由CASCADE CONSTRAINTS選項.
授予物件許可權:
GRANT {object_priv [{column_list}]
[,object_priv [{column_list}]]…
| ALL [PRIVILEGES]} ON [Schema.]object
TO {user | role |PUBLIC}[,{user | role | PUBLIC}]…
[WITH GRANT OPTION]
Column_list用於標識列許可權所對應列的列表.schema用於標識方案名.
1,授予ALTER 許可權
如果使用者在其他方案的表或序列上執行ALTER TABLE 或 ALTER SEQUENCE命令,必須具有ALTER 物件許可權.
GRANT ALTER ON emp TO blake;
2,授予EXECUTE許可權.
如果使用者要執行其他方案的包,過程和函式,必須在包,過程和函式上具有EXECUTE物件許可權.例如:為了使所有使用者都可以執行包DBMS_TRANSACTION,可以將執行該包的許可權授予PUBLIC
GRANT EXECUTE ON dbms_transaction TO public;
將EXECUTE ON dbms_transaction物件授予PUBLIC後,所有資料庫使用者都可以執行該包中的過程和函式.
Execute dbms_transaction.read_only;
3,授予INDEX許可權
如果使用者要在其他方案的表上建立索引,必須具有INDEX物件許可權.
GRANT INDEX ON scott.emp TO blake;
4,授予REFERENCES許可權.
使用者可以直接在其方案表之間定義主從關係.但在不同方案之間定義主從關係,必須將主表的REFERENCES物件許可權授予從表所對應的資料庫使用者.
GRANT REFERENCES ON dept TO blake;
5.授予列許可權.
列許可權用於控制使用者對其他方案物件列的訪問.只能在INSERT,UPDATE和REFERENCES上授予列許可權.直接授予物件許可權時,使用者可以訪問物件的所有列.假定執行授權操作GRANT UPDATE ON SCOTT.EMP TO BLACK,此時BLACKE可以更新SCOTT.EMP表上的所有列,為了使使用者BLAKE只能更新SAL列,必須為其授予列許可權.
GRANT UPDATE(sal) ON emp TO blake;
6,使用WITH GRANT OPTION選項.
WITH GRANT OPTION選項用於轉授物件許可權.該選項只能授予使用者,而不能授予角色.
Conn scott/tiger
GRANT SELECT ON emp TO blake WITH GRANT OPTION;
Conn blake/blake
GRANT SELECT ON scott.emp TO jones;
顯示物件許可權
1,顯示物件許可權.
資料字典檢視DBA_TAB_PRIVS,可以顯示所有使用者或角色的物件許可權資訊.
資料字典檢視ALL_TAB_PRIVS.可以顯示當前使用者或PUBLIC的物件許可權.
資料字典檢視USER_TAB_PRIVS.可以顯示當前使用者物件許可權的資訊.
下面以顯示BLAKE使用者被授予的所有許可權為例,說明使用資料字典檢視DBA_TAB_PRIVS的方法.
Conn system/manager
Col grantor format a10
Col object format a15
Col privilege format a10
SELECT grantor, owner ||’.’||table_name oject,privilege
FROM dba_tab_privs
WHERE grantee=’BLAKE’;
Grantor用於標識授權使用者,owner用於標識物件所有者,table_name用於標識資料庫物件,privilege用於標識物件許可權,grantee用於標識被授權的使用者或角色.
2,顯示列許可權.
資料字典檢視DBA_COL_PRIVS,顯示所有使用者或角色的列許可權資訊.
資料字典檢視ALL_COL_PRIVS,顯示當前使用者或PUBLIC的列許可權資訊;
資料字典檢視USER_COL_PRIVS,顯示當前使用者的列許可權資訊.
下面以顯示BLAKE使用者被授予的所有列許可權為例,說明使用資料字典檢視DBA_COL_PRIVS的方法.
Conn system/manager
Col owner format a10
Col table_column format a15
Col privilege format a10
SELECT owner,table_name||’.’||column_name table_column,
Privilege FROM dba_col_privs
WHERE grantee=’BLAKE’;
owner用於標識物件所有者,table_name用於標識資料庫物件,Column_name用於標識列名,privilege用於標識物件許可權,grantee用於標識被授權的使用者或角色.
3,顯示使用者授出的列許可權.
資料字典檢視ALL_COL_PRIVS_MADE,顯示物件所有者或授權使用者授出的所有列許可權.
資料字典檢視USER_COL_PRIVS_MADE,顯示當前使用者授出的所有列許可權.
SELECT grantee,privilege,table_name||’.’||column_name
Tab_column FROM user_col_privs_made;
4,顯示使用者所具有的許可權.
ALL_COL_PRIVS_RECD可以顯示使用者或PUBLIC組被授予的列許可權.
USER_COL_PRIVS_RECD可以顯示當前被授予的列許可權.
下面顯示BLAKE使用者被授予的列許可權為例,說明使用資料字典檢視ALL_COL_PRIVS_RECD的方法.
SELECT privilege, table_name||’.’||column_name tab_column,
Grantor FROM all_col_privs_recd WHERE grantee=’BLAKE’;
5,顯示使用者所授出的物件許可權.
ALL_TAB_PRIVS_MADE,可以顯示物件所有者或授權使用者所授出的所有物件許可權.
USER_TAB_PRIVS_MADE,可以顯示當前使用者所授出的所有物件許可權.
6,顯示使用者所具有的物件許可權
ALL_TAB_PRIVS_RECD可以顯示使用者或PUBLIC組被授予的物件許可權.
USER_TAB_PRIVS_RECD可以顯示當前使用者被授予的物件許可權.
收回物件許可權.
收回物件許可權一般情況下是有物件所有者完成的,如果已其他使用者身份收回物件許可權,則要求該使用者必須是許可權授予者
REVOKE { object_priv[, object_priv ] … | all [privileges]}
ON [schema.]object
FROM {user | role | PUBLIC} [, {user | role | PUBLIC} ] …
[CASCADE CONSTRAINTS];
Object_priv用於指定物件許可權,schema用於指定方案名,object用於指定物件名,user用於指定使用者名稱,role用於指定角色,PUBLIC用於指定PUBLIC使用者組.
收回了使用者所具有的物件許可權後,使用者將不能執行該物件許可權所對應的SQL命令
需要注意.物件許可權會被級聯收回.
例子:
REVOKE SELECT ON emp FROM blake;
若收回BLAKE使用者的許可權,也會級聯收回BLAKE授予其他使用者的許可權.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-245229/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Django restframework 框架筆記 (二) 許可權DjangoRESTFramework框架筆記
- Linux 筆記分享九:ACL 許可權Linux筆記
- Linux 筆記分享十:sudo 許可權Linux筆記
- Linux 筆記分享十一:sudo 許可權Linux筆記
- 4、許可權管理
- sql許可權管理SQL
- RBAC許可權管理
- MySQL許可權管理MySql
- 許可權管理策略
- PostgreSQL:許可權管理SQL
- Odoo許可權管理Odoo
- 特殊許可權管理
- MYSQL學習筆記13: DCL許可權控制(使用者許可權操作)MySql筆記
- CentOS7學習筆記(六) 使用者許可權管理CentOS筆記
- Linux 學習筆記--使用者及檔案許可權管理Linux筆記
- Laravel學習筆記六-許可權管理與中介軟體MiddlewareLaravel筆記
- django開發之許可權管理(一)——許可權管理詳解(許可權管理原理以及方案)、不使用許可權框架的原始授權方式詳解Django框架
- Security 10:許可權管理
- casbin-許可權管理
- Android6.0------許可權申請管理(單個許可權和多個許可權申請)Android
- DRF內建許可權元件之自定義許可權管理類元件
- 賬號和許可權管理
- 關於mysql許可權管理MySql
- Linux 下許可權的管理Linux
- 1.6.1. 管理員許可權
- Linux 中的許可權管理Linux
- ThinkPHP5+許可權管理PHP
- ubuntu 許可權管理設定Ubuntu
- fastadmin的許可權管理authAST
- MySQL許可權管理實戰MySql
- 【自然框架】許可權的視訊演示(二):許可權到欄位、許可權到記錄框架
- Confluence6對比系統管理員許可權和Confluence管理員許可權
- 『學了就忘』Linux許可權管理 — 55、檔案特殊許可權Linux
- 如何獲取最高管理員許可權 win10教育版最高管理員許可權Win10
- Vue2.0 + ElementUI 手寫許可權管理系統後臺模板(二)——許可權管理VueUI
- 許可權之選單許可權
- SpringSecurity許可權管理系統實戰—九、資料許可權的配置SpringGse
- linux 檔案許可權 s 許可權和 t 許可權解析Linux
- Mysql學習筆記4--使用者許可權MySql筆記