Oracle授予/撤销权限
本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;