Oracle授予/撤銷權限


本Oracle教程解釋了如何使用授予和撤銷權限的語法和示例。
可以在Oracle中的各種數據庫對象上使用GRANTREVOKE授予/撤銷權限。 我們首先看看如何授予和撤消對表的權限,然后再看看如何授予和撤銷Oracle中的函數和過程的權限。

授予表上的特權

可以授予用戶表格的各種權限。 這些權限可以是SELECTINSERTUPDATEDELETEREFERENCESALTERINDEXALL的任意組合。

語法

在Oracle中為表授予權限的語法是:

GRANT privileges ON object TO user;
  • privileges - 要分配的權限。 它可以是以下值:
權限 描述
SELECT 能夠在表上執行SELECT語句。
INSERT 能夠在表上執行INSERT語句。
UPDATE 能夠在表上執行UPDATE語句。
DELETE 能夠在表上執行DELETE語句。
REFERENCES 能夠創建引用表的約束。
ALTER 能夠執行ALTER TABLE語句來更改表定義。
INDEX 能夠使用create index語句在表上創建索引。
ALL 表上的所有權限。
  • object - 正在授予其權限的數據庫對象的名稱。 在授予表的權限的情況下,它將是表名。
  • user - 將被授予這些權限的用戶的名稱。

示例

我們來看看如何在Oracle中為表授予權限的例子。

例如,如果希望將名為suppliers的表的SELECTINSERTUPDATEDELETE權限授予用戶名maxsu,則可以運行以下GRANT語句:

GRANT SELECT, INSERT, UPDATE, DELETE ON suppliers TO maxsu;

還可以使用ALL關鍵字來表明希望為maxsu用戶授予所有權限。 例如:

GRANT ALL ON suppliers TO maxsu;

如果您只想授予所有用戶對表有SELECT訪問權限,可以將權限授予public關鍵字。 例如:

GRANT SELECT ON suppliers TO public;

撤銷表上的權限

當為用戶分配獲得了特權之后,您可能需要撤銷部分或全部特權。 為此,可以運行撤銷命令。 可以撤銷SELECTINSERTUPDATEDELETEREFERENCESALTERINDEXALL的任意組合。

語法

撤銷Oracle中表上的權限的語法是:

REVOKE privileges ON object FROM user;
  • privileges - 撤銷權限。 它可以是以下值:
權限 描述
SELECT 能夠在表上執行SELECT語句。
INSERT 能夠在表上執行INSERT語句。
UPDATE 能夠在表上執行UPDATE語句。
DELETE 能夠在表上執行DELETE語句。
REFERENCES 能夠創建引用表的約束。
ALTER 能夠執行ALTER TABLE語句來更改表定義。
INDEX 能夠使用create index語句在表上創建索引。
ALL 表上的所有權限。
  • object - 正在撤銷權限的數據庫對象的名稱。 在撤銷表的特權的情況下,它將是表名。
  • user - 將撤銷這些權限的用戶的名稱。

示例

我們來看看如何撤銷Oracle中表的權限的一些示例。

例如,如果想要從名為anderson的用戶名為suppliers的表中撤銷DELETE權限,則可以運行以下REVOKE語句:

REVOKE DELETE ON suppliers FROM anderson;

如果您想要撤銷名為anderson的用戶的表的所有權限,可以使用ALL關鍵字,如下所示:

REVOKE ALL ON suppliers FROM anderson;

如果您已授予suppliers表上所有公共(所有用戶)的權限,並且希望撤銷這些權限,則可以運行以下REVOKE語句:

REVOKE ALL ON suppliers FROM public;

授予函數/過程權限

在處理函數和程序時,可以授予用戶執行這些函數和程序的權限。

語法
在Oracle中為函數/過程授予EXECUTE權限的語法是:

GRANT EXECUTE ON object TO user;
  • EXECUTE - 編譯函數/過程的能力。直接執行函數/過程的能力。
  • object - 正在授予其權限的數據庫對象的名稱。 在授予函數或過程的EXECUTE權限的情況下,它將是函數名稱或過程名稱。
  • user - 將被授予EXECUTE權限的用戶的名稱。

示例

我們來看一些如何在Oracle中為函數或過程授予EXECUTE權限的示例。

例如,如果您有一個名為Find_Value的函數,並且想要授予對名為maxsu的用戶的EXECUTE訪問權限,那么可運行以下GRANT語句:

GRANT EXECUTE ON Find_Value TO maxsu;

如果想授予所有用戶執行此函數的權限,可以運行以下GRANT語句:

GRANT EXECUTE ON Find_Value TO public;

撤銷函數/程序的特權

一旦授予某個函數或過程的EXECUTE特權,可能需要從用戶哪里撤銷這些特權。 為此,可以執行REVOKE命令。

語法

Oracle中的函數或過程的撤銷權限的語法是:

REVOKE EXECUTE ON object FROM user;
  • EXECUTE - 編譯函數/過程的能力。直接執行函數/過程的能力。
  • object - 正在撤銷權限的數據庫對象的名稱。 在撤銷某個函數或過程的EXECUTE權限的情況下,它將是函數名稱或過程名稱。
  • user - 將被撤銷EXECUTE權限的用戶的名稱。

示例

我們來看看如何撤銷Oracle中的函數或過程的EXECUTE權限的一些示例。

如果想從名為anderson的用戶撤銷名為Find_Value的函數的EXECUTE權限,則可以運行以下REVOKE語句:

REVOKE execute ON Find_Value FROM anderson;

如果已經為名為Find_Value的函數授予公共(所有用戶)的EXECUTE特權,並且想要撤銷這些EXECUTE特權,則可以運行以下REVOKE語句:

REVOKE EXECUTE ON Find_Value FROM public;


免責聲明!

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



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