SQL中使用GRANT和REVOKE語句向用戶授權或回收對數據的操作權限


1.GRANT

GRANT語句的一般格式為:

    GRANT  <權限>  

    ON  <對象類型 >  < 對象名>

    TO   <用戶>

       [ WITH   GRANT  OPTION]

其語義為:將對指定操作對象的指定操作權限授予指定的用戶.發出該GRANT語句的可以是數據庫管理員,也可以是該數據庫對象的創建者。

 

如果指定來WITH   GRANT  OPTION 子句,則獲得某種權限的用戶還可以把這種權限授予其他用戶。但不允許循環傳授,即被授權者不能把權限在授回給授權者或祖先。如圖

如果沒有指定WITH   GRANT  OPTION 子句,則獲得某種權限的用戶只能使用該權限,不能傳播該權限。

例1:把查詢Student表的權限授給用戶U1

   GRANT   SELECT

   ON   TABLE   Student

   TO   U1;

 

例2:對SC表操作把INSERT權限授給U5表

   GRANT   INSERT

   ON   TABLE   SC

   TO   U5

   WITH   GRANT  OPTION;

 

U5表將此權限授給U6 

   GRANT   INSERT

   ON   TABLE   SC

   TO   U6

   WITH   GRANT  OPTION;

  同樣,U6還可以將此權限授U7

 

2.REVOKE

  授予用戶的權限可以由數據庫管理員或其他授權者用REVOKE語句收回,REVOKE語句的一般格式為:

   REVOKE <權限>

   ON  <對象類型>  <對象名>

   FROM  <用戶>  [CASCADE  |   RESTRICT];

 

例:把用戶U5對SC表的INSERT權限收回。

  REVOKE  INSERT

  ON  TABLE  SC

  FROM  U5  CASCADE;

其語義為:將用戶U5的INSERT權限收回同時,級聯(CASCADE)收回了U6和U7的INSERT權限,否則系統將拒絕執行該命令。

 

 

SQL提供了非常靈活的授權機制:

    1.數據庫管理員擁有對數據庫中所有對象的所有權限,並根據實際情況將不同的權限授予不同的用戶。

    2.用戶對自己建的基本表和視圖擁有全部操作權限,並可以使用GRANT語句授權給其他用戶,其他用戶擁有繼續授權的許可,還有再授權給其他用戶。

    3.所有授予出去的權力在必要時又可以用REVOKE語句收回。

 

可見,用戶可以“自主”地將數據的存取權限授予任何人,決定是否也將“授權”的權限授予別人,因此稱這樣的存取控制是自主存取控制。在現實當中,只有自己強大了你才有“自主”的權限。否則你只能被“授權”。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM