1. 程式人生 > >ORACLE資料庫-資料控制語言DCL

ORACLE資料庫-資料控制語言DCL

------------------------資料控制語言-----

資料控制語言(data control language,DCL)
在SQL中,資料控制功能包括事務管理功能和資料保護功能,即資料庫的恢復、
併發控制、資料庫的安全性和完整性控制等。這裡主要說一下資料庫的安全性控制功能。
資料庫管理系統(DBMS)必須具備以下功能:
         1.將授權的決定告知系統,這是有SQL的GRANT和REVOKE語句來完成的;
         2.將授權的結果存入資料字典;
         3.當用戶提出操作請求時,根據授權情況進行檢查,以決定是否執行操作請求。

-----GRANT 語句

--向用戶授予許可權
--GRANT <許可權 >[,<許可權 >] ...
--[ON <物件型別 ><物件名>]
--TO <使用者>[,<使用者>]...
--[WITH GRANT OPTION]

許可權的分類:

(1)對屬性列(TABLE COLUMN)和檢視(TABLE VIEW)的操作許可權包括SELECT\INSERT\UPDATE\DELETE以及這四種許可權的總和ALLPRIVILEGES。
(2)對基表(TABLE)的操作許可權包括查詢(SELECT)、插入(INSERT)、修改(UPDATE)、刪除(DELETE)、修改表(ALTER)、建立索引(INDEX)、六種許可權的總和(ALLPRIVILEGES)。
(3)對資料庫(DATABASE)可以有建表的許可權(CREATE TABLE),該許可權屬於DBA,可由DBA授予許可權給普通使用者,普通使用者有此許可權後可以建表,基表的所有者擁有對該表的一切操作許可權。
   對資料庫的許可權即系統許可權還包括 CREATE SESSION(登入資料庫的許可權)、CREATE SEQUENCE、CREATE VIEW、CREATE PROCEDURE 等。
   ALTER ANY TABLE( 可以修改所有表的許可權)
   SELECT ANY TABLE(可以查詢所有表的許可權)
   注意:不針對物件的許可權就是系統許可權,物件指(表、檢視等)
接受許可權的使用者可以是一個或者多個使用者,也可以是全體使用者(PUBLIC)。
如果指定了 WITH GRANT OPTION 則獲得某種許可權的使用者可以把這種許可權再授予給其他使用者,若是沒有指定該子句,則獲得此許可權的使用者只能使用該許可權而不能傳播該許可權。
示例:

--第一:給使用者分配系統許可權(建立了一個使用者叫 WO)

--GRANT 許可權 TO 使用者名稱;
GRANT CREATE SESSION TO WO--授予使用者可以連線導資料庫
GRANT CREATE TABLE TO WO--授予使用者建表的許可權
                       --ORA-01031: 許可權不足(許可權不足所報的錯誤)
GRANT INSERT ANY TABLE TO WO --插入表的許可權
GRANT UPDATE ANY TABLE TO WO --修改表的許可權
GRANT UNLIMITED TABLESPACE TO WO --授予使用者可以使用表空間
GRANT CREATE USER TO WO --授予使用者可以建立使用者
GRANT DROP USER TO WO --授予使用者刪除使用者的許可權
查詢當前使用者所擁有的系統許可權:
SELECT * FROM user_sys_privs;--這是一個檢視;

--第二:給使用者分配物件許可權

--GRANT 許可權 ON schema.物件名 TO 使用者名稱;
GRANT SELECT,UPDATE,INSERT ON EMP TO WO --在使用者SCOTT 下將EMP 表的許可權給了使用者WO 
在使用者WO中查詢EMP表:SELECT * FROM SCOTT.EMP;
在用於WO中更新EMP表:UPDATE SCOTT.EMP SET DEPTNO=20 WHERE DEPTNO=30
GRANT ALL ON EMP TO WO;--將物件上所有的許可權都給某人
GRANT INSERT ON EMP TO PUBLIC;--PUBLIC 表示所有使用者
ALL 許可權不包括 DROP 哦!
GRANT ALL ON SCOTT TO WO;--ORA-00942: 表或檢視不存在
GRANT SELECT TO WO;--ORA-01919: 角色 'SELECT' 不存在--(物件許可權就得賦予給物件)
GRANT SELECT ON EMP TO SCOTT;--在SCOTT 裡執行的且EMP 表是SCOTT 的,則報錯--ORA-01749: 使用者不能自己為自己 GRANT/REVOKE 許可權
查詢當前使用者所具有的許可權:
SELECT * FROM user_tab_privs;

--第三:將許可權控制在表列級別上

--GRANT UPDATE(列名) ON 表名 TO 使用者名稱 (只能修改表中固定的列)
--GRANT INSERT (列名) ON 表名 TO 使用者名稱(只能插入表中固定的列)
查詢 SELECT,刪除 DELETE 不能控制到列級別

--第四:許可權的傳遞

--將自己擁有的許可權繼續分配給別人
系統許可權的傳遞:GRANT 許可權 TO 使用者名稱 WITH ADMIN OPTION
物件許可權的傳遞:GRANT 許可權 TO 使用者名稱 WITH GRANT OPTION

-------------REVOKE 語句

--授予的許可權可以由DBA 或其他授權者用REVOKE 語句收回,REVOKE 語句的一般格式為:
--REVOKE <許可權>[,<許可權>]...
--[ON <物件型別><物件名稱>]
--FROM <使用者>[,<使用者>]...;
如果USER1將一個許可權給了USER2,USER2又給了USER3,則在執行DBMS回收USER1的許可權時,也會同時收回USER2和USER3的許可權,
即收回許可權的操作會級聯下去。
系統許可權收回:REVOKE 許可權 FROM 使用者名稱;
物件許可權收回: REVOKE 許可權 ON 物件名 FROM 使用者名稱;















相關推薦

ORACLE資料庫-資料控制語言DCL

------------------------資料控制語言----- 資料控制語言(data control language,DCL) 在SQL中,資料控制功能包括事務管理功能和資料保護功能,即資料庫的恢復、 併發控制、資料庫的安全性和完整性控制等。這裡主要說一下資料

oracle資料庫資料定義語言DDL

1.使用create建立表 1)表中欄位常用的資料型別:1:vachar2(可變長度的字串)、char(定長的字串)、nvachar2(unicode字符集的可變長度的字串)、nchar(unicode的定長的字串)、long(變長的字串)2:數字型:number(p,s)最大精度38位的十進位

Hive(4):Hive常用資料操縱語言DML,資料定義語言DDL,資料控制語言DCL

一、概述 1.DML(data manipulation language):        它們是SELECT、UPDATE、INSERT、DELETE,就象它的名字一樣,這4條命令是用來對資料庫裡的資料進行操作的語言 2.DDL(data definition la

表空間、使用者、許可權、角色 (資料控制語言-DCL-grant,revoke)

1、登陸資料庫 SQLPLUS SYS AS SYSDBA; // 登陸SYS帳戶 SQLPLUS 使用者名稱/密碼@SID; // 登陸普通使用者 例如:SQLPLUS LAOSAN/[email&

資料查詢語言DQL,資料操縱語言DML, 資料定義語言DDL,資料控制語言DCL

SQL語言共分為四大類:資料查詢語言DQL,資料操縱語言DML,資料定義語言DDL,資料控制語言DCL。1 資料查詢語言DQL 資料查詢語言DQL基本結構是由SELECT子句,FROM子句,WHERE 子句組成的查詢塊:SELECT <欄位名錶> FROM &l

mysql 資料庫快速入門 DCL資料控制語言

目錄 DCL(Data Control Language,DCL):資料控制語言 GRANT   定義許可權 語法格式 示例 REVOKE 收回許可權 語法格式 示例 DCL(Data Control Language,DCL):資料控制語言

oracle資料庫中sql語言建立表,更新,刪除資料

一sql語言的分類 sql語言分為4類:DQL(資料查詢語言),DML(資料操縱語言),資料定義語言(DDL),資料控制語言(DCL)。 二資料定義語言 資料定義語言用於建立,刪除,修改資料庫中的各種物件,物件比如-表,索引,檢視,同義詞、聚簇等 CREATETABLE/

oracle 流程控制oracle資料庫流程控制語句控制PL/SQL語句

1、條件語句 if else判斷 #宣告變數 declare employee_sa number; begin select count(*) into employee_sa from employees where salary>6000; if employee_sa

Oracle資料庫資料常用的匯入匯出

採用exp/imp命令 知識擴充:   資料泵匯出匯入(EXPDP和IMPDP)的作用    1、實現邏輯備份和邏輯恢復。    2、在資料庫使用者之間移動物件。    3、在資料庫之間移動物件    4、實現表空間搬移。   資料泵匯出匯

Oracle資料庫資料物件分析 下

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Oracle資料庫資料顯示亂碼問題解決方法。

一、問題描述:       在將其它資料庫的資料匯出檔案匯入本地新建資料庫時,所匯入的資料全部是亂碼,一般表現為資料表中列的值類似於"?????",即內容大部分為?的表現形式。初步判斷是因為Oracle客戶端與資料庫編碼不一致所導致。亂碼問題在各類技

資料控制語言

資料控制,其實就是“分配許可權”  --涉及使用者 使用者管理 分配許可權 許可權有哪些呢? mysql中的使用者資訊都儲存在mysql的user表中: 使用者建立 格式:create user  '使用者名稱@登入地址'  identified b

ORACLE資料庫資料的備份與恢復

  原創作品,轉自請在文字開頭顯眼位置註明出處:https://www.cnblogs.com/sunshine5683/p/10052949.html 資料備份恢復在資料庫管理中至關重要,今天,總結一下資料庫備份與恢復需要注意的方面和實際操作!、 一、在備份之前首先應該執行commit語句,

Oracle資料庫 資料完整性和DML語句

 資料完整性和DML語句 資料完整性 資料完整性(Data Integrity)是指資料的精確性(Accuracy) 和可靠性(Reliability)。它是應防止資料庫中存在不符合語義規定的資料和防止因錯誤資訊的輸入輸出造成無效操作或錯誤資訊而提出的。資料完整性指儲存在資料庫中的所有資料值均正確的狀態。如果

Oracle資料查詢語言-DQL-select

SELECT語句功能 投影操作:結果集是源表中的部分列。 選擇操作:結果集是源表中的部分行。 連線操作:將兩張表裡的行按某種條件組合成一條長長的行放入結果集。 最基本的用法:SELECT ……FROM…… SELECT子句 用於指定欄位名,多個欄位名用逗號隔開,*代表所有列。 SELECT後面可以跟列,字

一次較為完整的oracle資料庫資料遷移過程

作為一個後端開發者, 需要處理的問題會非常多非常雜,不斷的接觸各方面的知識,總結心得才能有所提高。 最近我們將甲方的信披系統改造後併入了我們的系統,開發基本完成,接下來資料遷移就是一個大問題了。因為之前其它開發商系統的資料庫設計極爛,所以這次資料遷移稍微顯得麻煩,而資料遷移

Oracle資料庫資料檔案rm -rf誤刪除後恢復

Oracle資料庫中表空間的資料檔案在基於OS系統級別被rm -rf 刪除後,只要資料庫在刪除後一直未被shutdown,那麼就可以手動恢復,恢復的前提是Oracle安裝在Linux系統下,下面是一個例項模擬 1. 在資料庫open的時候,直接刪除users表空間中的

Oracle資料庫資料物件分析(中)

KEYWORD  描述 START WITH  定義序列生成的第一個數字,預設為1 INCREMENT BY  定義序列號是上升還是下降,對於一個降序的序列INCREMENT BY為負值 MINVALUE  定義序列可以生成的最小值,這是降序序列中的限制值。預設情況下該值為NOMINVALUE,NOMINVA

Oracle資料庫資料遷移到MySQL資料庫時間格式問題

1.包含年月日? 在oracle資料庫中,日期格式如下: <if test="params.startTime != null">and t.KPRQ <![CDATA[ >=

Oracle DCL(Data Control Language)數據控制語言(權限privilege,角色role,用戶user介紹)

ati nic ssi control 什麽 span remove insert ade 1、如何控制用戶訪問 1、身份驗證,認證:Authentication 2、授權:Authorization 3、審計:Audit 2、權限 數據庫安全: