/********************************************
* ORACLE 权限操作:
* Oracle权限是非常强大的,它是一个非常庞大的系统,我们都知道Oracle是用表(系统表)来管理表(用户表)的关系型
* 数据库管理系统,在这里,我们叫系统表为 数据字典
*/
-- 写在最前面:
-- 用户介绍
sys;//系统管理员,拥有最高权限
system;//本地管理员,次高权限
scott;//普通用户,密码默认为tiger,10g 后版本,默认未解锁
-- 登录方法:
sqlplus / as sysdba;//登陆sys帐户
sqlplus sys as sysdba;//同上
sqlplus scott/tiger;//登陆普通用户scott
-- 1. 权限大致可以分为 两类, 一类是:系统权限,在 DBA_SYS_PRIVS数据字典中可以查看; 还有一类是:对像权限,如:针对表的
-- 增、删、改、查 操作,都是属于对像权限,可以通过查询 USER_TAB_PRIVS 数据字典 查看
-- 使用 SYS 登录,可以查看到 DBA_SYS_PRIVS 的结构 如下:
DESC DBA_SYS_PRIVS;
名称 是否为空? 类型
----------------------------------------- -------- -------------------
GRANTEE NOT NULL VARCHAR2(30)
PRIVILEGE NOT NULL VARCHAR2(40)
ADMIN_OPTION VARCHAR2(3)
-- 使用普通用户登录,可以查看到 USER_TAB_PRIVS(用户对像权限) 和 USER_SYS_PRIVS(用户系统权限)
DESC USER_SYS_PRIVS;
Name Type Nullable Default Comments
------------ ------------ -------- ------- -------------------------------
USERNAME VARCHAR2(30) Y User Name or PUBLIC
PRIVILEGE VARCHAR2(40) System privilege
ADMIN_OPTION VARCHAR2(3) Y Grant was with the ADMIN option
DESC USER_TAB_PRIVS;
Name Type Nullable Default Comments
---------- ------------ -------- ------- -------------------------------------------
GRANTEE VARCHAR2(30) Name of the user to whom access was granted
OWNER VARCHAR2(30) Owner of the object
TABLE_NAME VARCHAR2(30) Name of the object
GRANTOR VARCHAR2(30) Name of the user who performed the grant
PRIVILEGE VARCHAR2(40) Table Privilege
GRANTABLE VARCHAR2(3) Y Privilege is grantable
HIERARCHY VARCHAR2(3) Y Privilege is with hierarchy option
-- 2. 创建用户
create user a identified by a default tablespace users; -- 创建一个用户
grant connect,resourct to a; -- 授与 角色,角色中含有 系统权限,我们下面会看到
-- 3. 查看角色, 通过 数据字典 DBA_ROLES, 可以得到各个角色
DESC DBA_ROLES;
Name Type Nullable Default Comments
----------------- ------------ -------- ------- -------------------------------------------------------
ROLE VARCHAR2(30) Role Name
PASSWORD_REQUIRED VARCHAR2(8) Y Indicates if the role requires a password to be enabled
-- 4. 查看各角色的权限,可以通过数据字典 ROLE_SYS_PRIVS 数据字典 来查看
DESC ROLE_SYS_PRIVS;
Name Type Nullable Default Comments
------------ ------------ -------- ------- -------------------------------
ROLE VARCHAR2(30) Role name
PRIVILEGE VARCHAR2(40) System Privilege
ADMIN_OPTION VARCHAR2(3) Y Grant was with the ADMIN option
-- 4.1 我们可以查看系统创建的角色 resource 的各种权限
select role,privilege from ROLE_SYS_PRIVS where role = 'RESOURCE';
ROLE PRIVILEGE
------------------------------ ----------------------------------------
RESOURCE CREATE SEQUENCE
RESOURCE CREATE TRIGGER
RESOURCE CREATE CLUSTER
RESOURCE CREATE PROCEDURE
RESOURCE CREATE TYPE
RESOURCE CREATE OPERATOR
RESOURCE CREATE TABLE
RESOURCE CREATE INDEXTYPE
8 rows selected
-- 从以上输出,我们可以看出,角色 resource 拥有 8个系统权限,如上;
-- 这里我们要注意一点,细心的人可能会发现,当我们创建好一个用户,授与 resource 角色给到用户时,
-- 我们查看这个用户的系统权限时,会发现多出一个 UNLIMITED TABLESPACE 的权限,如我们第2步创
-- 建的用户 a
conn a/a
select * from user_sys_privs;
USERNAME PRIVILEGE ADMIN_OPTION
------------------------------ ---------------------------------------- ------------
A CREATE SESSION NO
A UNLIMITED TABLESPACE NO
-- 你会看到,第2行有一个 UNLIMITED TABLESPACE 的系统权限.
-- 针对这个 UNLIMITED TABLESPACE权限,它是表示可以在任易表空间下申请空间。 这个系统权限很
-- 特别,它属于 resource 角色,但是,我们查数据字典时看不见。严格来说,我们不能 把这个 权限
-- 授与任何我们自己创建的 角色。所以, 在数据字典中,我们查不到它。请记住就行。
-- 5. 创建 角色 和 授与 角色系统权限
create role mytestrole ; -- 创建角色,名为:mytestrole
grant create table,create procedure,create sequence to mytestrole; -- 授与权限给角色
-- 5.1 我们可以查询数据字典来看到此权限。
select * from role_sys_privs where role = 'MYTESTROLE';
ROLE PRIVILEGE ADMIN_OPTION
------------------------------ ---------------------------------------- ------------
MYTESTROLE CREATE TABLE NO
MYTESTROLE CREATE SEQUENCE NO
MYTESTROLE CREATE PROCEDURE NO
-- 6. 授权
/*管理员授权, 注:授系统权限时,只能是DBA ,授对像权限时,对像拥有者就可以 */
-- 下面是 DBA 授予系统权限的例子:
grant create session to sodi; -- 授予sodi用户创建session的权限,即登陆权限
grant unlimited session to sodi; -- 授予sodi用户使用表空间的权限
grant create table to sodi; -- 授予创建表的权限
grante drop table to sodi; -- 授予删除表的权限
grant insert table to sodi; -- 插入表的权限
grant update table to sodi; -- 修改表的权限
grant all to public; --这条比较重要,授予所有权限(all)给所有用户(public)
-- 下面是授予对像权限的例子, 其中 tablename是指表名
/* oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的 */
grant select on tablename to sodi; -- 授予 sodi 用户查看指定表的权限
grant drop on tablename to sodi; -- 授予删除表的权限
grant insert on tablename to sodi; -- 授予插入的权限
grant update on tablename to sodi; -- 授予修改表的权限
grant insert(id) on tablename to sodi; -- 授予对指定表特定字段的插入和修改权限,注意,只能是insert和update
grant update(id) on tablename to sodi; -- 授予对指定表特定字段的插入和修改权限,注意,只能是insert和update
grant alert all table to sodi; -- 授予sodi用户alert任意表的权限
-- 7. 撤销权限
/* 使用 revoke 命令,使用时同 grant 一致 */
revoke create session from sodi; --撤消对 sodi用户 create session的权限
revoke insert on tablename from sodi; -- 撤消插入的权限
-- 8. 权限传递
/***********************************************************
* 通过 with admin option 选项和 with grant option 选项,二者异同点:
* 1. 相同点:
* 两者 都可以用户给 用户授权或者 给 角色授权上。
* grant create table to a with admin option ;
grant select on tablename to b with grant option;
* 2. 不同点:
with admin option 只能用在授予 系统权限上
with grant option 只能用户授予 对像权限上
当DBA把系统权限create table 授予了用户 a 时,并且指定了 with admin option
如:grant create table to a with admin option
此时,用户a可以创建表,并且还可以把 create table 权限授予 用户 b, 这就是 权限传递
再如:grant select on tablename to a with grant option
此时,用户a可以查询表tablename,而且用户a还可以把权限授予用户b,并且b也可以访问tablename
不过,要注意的是:当权限回收时,with grant option会传递回收;而with admin option则不会
*/
-- 例:
grant create table to a with admin option;
grant select on tablename to b with grant option;
-- 切换成用户b
select * from a.tablename; -- 可以有权限查询
-- 再授权给用户c
grant select on a.tablename to c; -- 由于上面有了 with grant option,则此语句成功
-- 切换成用户 c
select * from a.tablename; -- success.
-- 可以再测试一下,回收。
分享到:
相关推荐
### Oracle权限管理详解 #### 一、Oracle用户权限概述 Oracle数据库系统中权限管理是确保数据安全的关键组成部分。本文档将详细介绍Oracle权限管理的基础概念、系统权限与对象权限的分配和撤销方法,以及如何通过...
### Oracle权限管理详解 在Oracle数据库管理中,权限管理是一项非常重要的任务,它涉及如何控制用户对数据库资源的访问以及他们能执行的操作类型。本文将详细介绍Oracle中的权限管理概念、不同类型的权限及其授予与...
本节将重点介绍几个常用的Oracle权限管理命令,并结合实例进行说明: 1. **登录权限**: - `CREATE SESSION`:允许用户登录到数据库。 ```sql GRANT CREATE SESSION TO zhangsan; ``` - `UNLIMITED TABLESPACE...
总结来说,Oracle数据库的权限管理和资源分配是通过角色分配、权限控制、表空间策略、资源管理等多种手段来实现的。这些机制能够有效解决不同用户之间可能产生的冲突,保障数据库系统的稳定运行和高效性能。通过深入...
### Oracle权限函数详解 在Oracle数据库管理中,权限管理是一项重要的任务,它涉及到对用户、角色及对象等数据库实体的访问控制。通过合理地分配权限,可以有效地保护数据的安全性和完整性,同时确保业务流程的正常...
总结来说,Oracle账户权限管理涉及用户创建、权限授予、撤销、传递和角色管理。系统权限和对象权限的精细划分确保了数据库的安全性,同时角色的使用方便了权限的批量分配。在实际操作中,应根据业务需求合理设置和...
- **案例1:金融行业**:某大型银行通过部署Oracle 安全身份管理解决方案,实现了对用户访问权限的精细化管理,降低了安全风险,提高了合规性。 - **案例2:医疗保健领域**:一家医疗保健提供商采用Oracle 解决方案...
"使用PLSQL创建Oracle数据库用户并设置权限" 在 Oracle 数据库中,创建用户并设置权限是...3. Oracle 数据库管理员指南: Oracle 数据库管理员指南提供了详细的数据库管理指南,包括用户管理、权限管理和表管理等。
#### 五、Oracle 用户管理总结 在Oracle数据库管理中,正确地创建用户并为其分配合适的权限是保障数据库安全的关键步骤。通过本文介绍的方法,您可以有效地创建新用户,并根据需求为用户授予权限,从而实现对数据库...
### Oracle用户、权限、角色管理 #### 一、权限分类 在Oracle数据库中,权限主要分为两大类:系统权限和实体权限。 ##### 系统权限 - **DBA**: 拥有全部特权,是最高的权限级别,只有DBA用户才能创建数据库结构。...
总结来说,Unix和Linux下的Oracle数据库管理是一项涵盖广泛的技术任务,涉及安装、配置、维护、优化和故障排查等多个方面。熟练掌握这些知识对于任何Oracle DBA来说都是至关重要的,能够确保数据库系统的稳定、高效...
### Oracle权限详解:with admin option与with grant option的用法 #### 一、概述 Oracle数据库作为企业级数据管理的核心工具之一,在权限控制方面提供了强大的功能。为了更好地管理和分配数据库中的权限,Oracle...
### Oracle学习心得总结 在IT领域中,Oracle数据库因其强大的功能和广泛的适用性而备受青睐。对于初学者而言,掌握Oracle的基本操作是非常重要的一步。本文将根据提供的文档内容,总结和扩展Oracle数据库的基础知识...
在Oracle数据库管理中,权限管理是确保数据安全性和访问控制的重要组成部分。Oracle提供了两种主要类型的权限:系统权限(System Privileges)和对象权限(Object Privileges)。这两种权限类型分别允许用户执行特定的...
总结起来,Oracle学生成绩管理系统结合了Oracle数据库的强大功能和教育管理的需求,不仅是一个实用的工具,也是学习数据库管理和软件开发的优秀实例。通过深入研究这个系统,可以提升对数据库设计、SQL编程、性能...
总结起来,"jsp+oracle企业管理系统源码"是一个涵盖Web开发和数据库管理的综合项目,它提供了从用户界面到数据库操作的全方位实践,对于学习JSP、Oracle数据库以及企业级系统设计具有很高的参考价值。通过深入研究这...