下面谈谈关于系统权限与对象权限的revoke
差别。
1
、系统权限的撤销:
收回系统权限时,没有级联效果。什么是级联效果呢?就是当我(sys
)将某一系统权限(create table
)授予给用户test1
后(使用with admin option
,这样的话test1
可以将此权限再授予第三个用户),test1
又将此权限授予给第三者(test2
),这不同于sys
直接对test2
授予create table
。当我们收回test1
的create table
权限时,test1
以前创建的表仍然存在,但无法创建新表,而test
仍然用于create table
的权限。下面来看看这个过程:
创建用户test1
,并授予基本的权限,然后授予将权限create table
授予给其他用户的with admin option
权限。
SQL> create user test1 identified by test1 default tablespace data;
用户已创建
SQL> grant create session,unlimited tablespace to test1;
授权成功。
SQL> grant create table to test1 with admin option;
授权成功。
SQL> create user test2 identified by test2 default tablespace data;
用户已创建
SQL> grant create session,unlimited tablespace to test2;
授权成功。
SQL> conn test1/test1@company;
已连接。
SQL> create table t1(id number);
表已创建。
SQL> grant create table to test2;
授权成功。
SQL> conn test2/test2@company;
已连接。
SQL> create table t2(id number);
表已创建。
SQL> conn sys/oracle@company as sysdba
已连接。
SQL> revoke create table from test1;
撤销成功。
SQL> conn test1/test1@company;
已连接。
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------------------------------------
T1
SQL> create table t3(id number);
create table t3(id number)
*
ERROR
位于第 1
行:
ORA-01031: insufficient privileges
SQL> insert into t1 values(1);
已创建 1
行。
SQL> commit;
提交完成。
SQL> select * from session_privs;
PRIVILEGE
----------------------------------------------------------------------------
CREATE SESSION
UNLIMITED TABLESPACE
SQL> conn test2/test2@company;
已连接。
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------------------------------------
T2
SQL> create table t4 as select * from t2;
表已创建。
SQL> insert into t2 values(1);
已创建 1
行。
SQL> select * from session_privs;
PRIVILEGE
----------------------------------------------------------------------------
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
总结:系统权限的回收不存在级联关系,只能回收直接授权的。
2
、对象权限的撤销:
回收对象权限时,存在级联操作。先看过程:
SQL> show user;
USER
为"TEST1"
SQL> conn sys/oracle@company as sysdba
已连接。
SQL> grant dba to scott;
授权成功。
SQL> conn scott/tiger@company;
已连接。
SQL> select count(*) from test_pk;
COUNT(*)
----------
1000
SQL> grant select on test_pk to test1 with admin option;
grant select on test_pk to test1 with admin option
*
ERROR
位于第 1
行:
ORA-00993: missing GRANT keyword
注意此处与系统权限不一样!系统权限是with admin option
,
对象权限是with grant option
!
SQL> grant select on test_pk to test1 with grant option;
授权成功。
SQL> conn test1/test1@company;
已连接。
SQL> select count(*) from scott.test_pk;
COUNT(*)
----------
1000
SQL> conn test2/test2@company;
已连接。
SQL> select count(*) from scott.test_pk;
select count(*) from scott.test_pk
*
ERROR
位于第 1
行:
ORA-00942: table or view does not exist
————此时还没有授权,报错正常。
用test1
给test2
授予查看scott.test_pk
的权限。
SQL> conn test1/test1@company;
已连接。
SQL> grant select on scott.test_pk to test2;
授权成功。
SQL> conn test2/test2@company;
已连接。
SQL> select count(*) from scott.test_pk;
COUNT(*)
----------
1000
SQL> conn scott/tiger@company;
已连接。
SQL> revoke select on test_pk from test1;
撤销成功。
SQL> conn test1/test1@company;
已连接。
SQL> select count(*) from test1;
select count(*) from test1
*
ERROR
位于第 1
行:
ORA-00942: table or view does not exist
-----
这个权限已经回收,所以报错!
SQL> conn test2/test2@company;
已连接。
SQL> select count(*) from scott.test_pk;
select count(*) from scott.test_pk
*
ERROR
位于第 1
行:
ORA-00942: table or view does not exist
-----
这个权限也被级联回收,所以报错!
SQL> select * from v$version;
BANNER
-------------------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
PL/SQL Release 9.2.0.4.0 - Production
CORE
9.2.0.3.0
Production
TNS for Linux: Version 9.2.0.4.0 - Production
NLSRTL Version 9.2.0.4.0 - Production
总结:在回收对象权限时,存在级联回收!也就是说如果用户scott
将查看test_pk
表的权限授予给test1
用户,并且授予其可以再将此权限授予给其他用户的权限,也就是with grant option
。此时test1
将查看test_pk
表的权限授予给test2
用户。当scott
回收test1
查看test_pk
表的权限时,test2
查看test_pk
表的权限同时被回收。
相关推荐
该系统分为系统权限和对象权限两大类。 系统权限(Database System Privilege) --------------------------- 系统权限是指可以让用户执行特定的命令集的权限。例如,create table权限允许用户创建表,grant any ...
在Greenplum数据库管理系统中,权限管理是确保数据安全性和访问控制的重要机制。它允许管理员精确地控制不同用户和角色对数据库对象的访问权限,从而防止未经授权的数据访问或修改。 1.1 概述 Greenplum的权限系统...
2. **对象权限**:与系统权限不同,对象权限允许用户对特定数据库对象进行操作,例如读取(SELECT)、插入(INSERT)、更新(UPDATE)、删除(DELETE)表中的数据,或者创建索引(CREATE INDEX)等。对象权限只能在...
在SQL Server 2005中,还可以利用内置的权限控制机制,如GRANT、DENY和REVOKE语句,直接为用户或角色授予、拒绝或撤销权限。此外,可以使用存储过程和触发器来增强权限管理的安全性和复杂性,例如,通过触发器确保...
例如,我们可以使用GRANT和REVOKE语句来分配和撤销用户对数据库对象的访问权限。 四、设计模式与最佳实践 1. 角色-基于的角色的访问控制(RBAC):这是最常见的权限管理模式,用户通过角色获取权限。在Java中,...
5. 数据库权限控制:如SQL的GRANT和REVOKE语句,用于控制对数据库对象的访问。 总结,权限控制系统是保障信息系统安全的核心机制,通过科学的权限分配和严格的访问控制,实现用户行为的规范和数据保护。理解并掌握...
在Oracle数据库系统中,权限管理是确保数据安全性与完整性的重要机制。权限的分配与管理是数据库管理员(DBA)和系统管理员的核心职责之一。本文将深入探讨Oracle中的权限概念、类型以及如何进行权限的授予与回收。 ...
在Oracle中,权限和角色的概念是为用户提供访问控制机制,允许管理员精细地控制用户对数据库对象的访问权限,同时简化权限的分配过程。 1. 权限(Privileges):权限是Oracle中允许用户执行特定操作的能力。例如,...
Oracle中的权限分为系统权限和对象权限两大类。 ##### 系统权限 系统权限控制用户对整个数据库系统功能的访问,如创建表、连接数据库等。例如,`CREATE SESSION`权限允许用户连接到数据库,而`CREATE TABLE`则允许...
总之,管理Oracle的用户权限是一个复杂但关键的任务,涉及到系统和对象权限的分配、撤销以及审计机制的配置。通过精细的权限管理和角色设定,DBA可以确保数据的安全性,同时满足不同用户和角色的访问需求。
权限是 OceanBase 数据库中的访问控制机制,用于控制用户对数据库对象的访问权限。 OceanBase SQL 权限控制提供了多种权限管理语句,例如: * 授予权限:使用 `GRANT` 语句可以授予用户权限。 * 撤回权限:使用 `...
在Oracle数据库中,权限分为两种类型:系统权限和对象权限。系统权限涉及到对全局数据库操作的授权,如创建表、备份数据库或管理其他用户等。对象权限则针对特定数据库对象,如读取、更新、删除表中的数据。权限可以...
权限主要包括系统权限(SYS PRIVILEGES)和对象权限(OBJECT PRIVILEGES)。系统权限允许用户执行特定的操作,如创建表、索引等;而对象权限则允许用户对特定的对象(如表、视图)执行操作。 #### 二、Oracle预定义...
MySQL 是一个广泛使用的关系型数据库管理系统,用户权限管理是 MySQL 安全性的关键组件之一。创建 MySQL 用户并赋予某指定库表的权限是 MySQL 安全性配置的重要步骤。本文将详细介绍 MySQL 用户权限管理和授权的相关...
它分为两种类型:系统权限和对象权限。 ##### 1、系统权限 系统权限指的是执行特定类型SQL命令的权利,例如创建表、创建视图等操作。系统权限用于控制用户可以执行哪些数据库操作。 **A、系统权限的介绍** ...
在Oracle中,权限管理主要分为系统权限和对象权限两大类,通过这两类权限,管理员可以精细地控制用户对数据库资源的访问。 系统权限涉及到数据库操作的全局权限,如创建会话(CREATE SESSION)、创建表(CREATE ...
根据提供的文件内容,本文将详细解释Oracle数据库中的权限管理机制,包括系统权限、对象权限以及相关的操作命令。Oracle权限管理是数据库安全性的重要组成部分,通过合理分配权限可以有效地控制用户对数据库资源的...
- **对象权限**:针对特定对象(如表、视图、序列、索引、存储过程等)的操作权限,如SELECT、INSERT、UPDATE、DELETE、EXECUTE等。 - **系统权限**:对全局数据库操作的权限,如CREATE TABLE、ALTER USER、CREATE...
在MySQL中,我们可以使用内置的用户管理和权限系统来进行这两步操作,例如通过`CREATE USER`、`GRANT`、`REVOKE`等SQL命令来创建用户并分配或回收权限。 描述中提到的“用户表”用于存储用户信息,包括用户名、密码...