授予与撤销
向被授权者授予有效特权很容易,并且可以一遍又一遍地重复,即使特权已被授予。如果您使用了具有有效权限的正确语法,则不会引发错误。
另一方面,撤销用户的有效权限是不同的,而且相当严格,如果该权限从未授予用户,则会失败,系统权限为ORA -01952,对象权限为 ORA-01927 。
实践中的另一个区别是,我们会在用户需要时给予很多,但我们很少会撤销。
在这篇文章中,我们将看到一些正式的授权模式,它们会提醒我们正确有效地执行此操作。
授予系统权限
无论何时创建用户,都可能需要授予系统权限。
1. 授予单一受赠人单一特权
我们授予用户系统权限。这是一对一的类型,最简单的GRANT语法模式。
SQL> grant create procedure to hr;
Grant succeeded.2. 将单一权限授予多个受赠者
我们授予某些用户系统权限。这是一对多类型。
SQL> grant create procedure to hr, oe, sh;
Grant succeeded.3. 向单个受赠者授予多个权限
我们授予用户一些系统权限。这是多对一的类型。
SQL> grant create procedure, create table, create view to hr;
Grant succeeded.4. 向单一受赠者授予混合特权
我们甚至可以在系统权限列表中混合一个角色。
SQL> grant create procedure, create table, create view, connect to hr;
Grant succeeded.在此示例中,CONNECT是一个角色。
5. 向多个受赠者授予混合特权
我们可以在单个语句中看到多个特权产品多个用户。这是多对多类型。
SQL> grant create procedure, create table, create view, connect to hr, oe, sh;
Grant succeeded.如果他们是同一类型的用户,那么一次授予权限是非常有效的方法。
授予对象特权
适用于授予系统特权的规则也适用于授予对象特权。但是,我们在GRANT语句中有一个额外的ON对象子句。
SQL> grant select, insert, update, delete on hr.employees to oe, sh, pm;
Grant succeeded.如果授予者不是对象的所有者,则对象名称应该是完全限定的。
我们可以授予多个对象的对象权限吗?
不,我们不能。目标对象不能成倍增加。让我们看看一个不正确的说法。
SQL> grant select, insert, update, delete on hr.employees, hr.countries to oe, sh, pm;
grant select, insert, update, delete on hr.employees, hr.countries to oe, sh, pm
*
ERROR at line 1:
ORA-00990: missing or invalid privilege这里我们在一个语句中授予了两个表,但最终我们看到了ORA-00990,这意味着授予对象权限时不能接受多个对象。
原文标题:Grant Privilege Correctly
原文作者:Ed Chen
原文链接:https://logic.edchen.org/grant-privilege-correctly/
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




