本Oracle教程解釋了如何使用授予和撤銷權限的語法和示例。
可以在Oracle中的各種數據庫對象上使用GRANT
和REVOKE
授予/撤銷權限。 我們首先看看如何授予和撤消對表的權限,然后再看看如何授予和撤銷Oracle中的函數和過程的權限。
授予表上的特權
可以授予用戶表格的各種權限。 這些權限可以是SELECT
,INSERT
,UPDATE
,DELETE
,REFERENCES
,ALTER
,INDEX
或ALL
的任意組合。
語法
在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
的表的SELECT
,INSERT
,UPDATE
和DELETE
權限授予用戶名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;
撤銷表上的權限
當為用戶分配獲得了特權之后,您可能需要撤銷部分或全部特權。 為此,可以運行撤銷命令。 可以撤銷SELECT
,INSERT
,UPDATE
,DELETE
,REFERENCES
,ALTER
,INDEX
或ALL
的任意組合。
語法
撤銷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;