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;
posted @ 2018-03-19 08:38  YouseiRaws  阅读(14659)  评论(0编辑  收藏  举报