1、 示例:创建角色mk_clerk,该角色不需要任何口令标识 。 SQL connect system/oracleorcl 已连接。 create role mk_clerk; 创建角色at_clerk,该角色在激活时需要口令标识 。 create role at_clerk 2 identified by rmb;创建角色manager,该角色使用外部服务来标识。 修改角色将角色AT_CLERK的验证方法改为不需要任何标识 。 alter role at_clerk 2 not identified; 将角色MANAGER的验证方法改为需要密码标识 。 alter role manager
2、2 identified by rmb; 赋予角色权限 我们知道角色是权限的集合,所以在创建了角色后,就需要将各种权限赋予该角色,赋予角色权限的语法格式如下所示。 GRANT 权限 | 角色 TO 角色名 为角色CLERK赋予权限 grant create session,select any table,create view to at_clerk; 将权限和角色AT_CLERK授予角色MANAGER grant create any table,at_clerk to manager; 赋予用户角色我们知道角色是权限的集合,所以在创建了角色后,就需要将各种角色赋予用户,或赋予所有用户(P
3、UBLIC),将角色赋予用户的语法格式如下所示。GRANT role , role TO user | role | public | , user | role | public WITH ADMIN OPTION参数含义如下所示。参数解释 role :赋予用户的角色名(如多个角色,则用逗号隔开)。 user:被赋予角色的用户(如多个用户用逗号隔开) PUBLIC:将角色赋予所有用户 WITH ADMIN OPTION:被赋予该角色的用户或角色可以继续将该角色赋予其他用户或角色。示例:创建一个新用户,然后将角色赋予该用户 SQL create user mymanager identifie
4、d by my12#; grant at_clerk to mymanager with admin option 回收和删除角色回收用户CLERK的AT_CLERK角色 revoke at_clerk from mymanager; 删除角色AT_CLERK SQL drop role at_clerk; 将角色授予所有用户。 grant manager to public; 回收授予PUBLIC的MANAGER角色 revoke manager from public; 权限的概念和分类 权限是执行特殊SQL语句或访问其他用户拥有的对象的权利,这些权利包括:连接数据库、维护表空间、改变系统
5、状态、创建表、从用户表中选择数据行、执行存储过程等。 Oracle将权限分为系统权限和用户权限。 系统权限:系统权限允许用户执行一个或一类特殊的数据库操作,如创建数据库、创建用户、创建与维护表空间以及管理会话等。对象权限:对象权限是用户维护数据库对象的权利,如维护表、视图、序列号、存储过程、函数等。 几种系统权限 下面我们介绍常用的几类系统权限。 1.与索引相关。 CREATE ANY INDEX:创建任何模式中对象的索引。 ALTER ANY INDEX:修改任何模式的索引。 DROP ANY INDEX:删除任何模式的索引。 说明:没有CREATE INDEX的权限。在CREATE TAB
6、LE权限中包含了CREATE INDEX的权利。 2.与表相关。 CREATE TABLE:在当前模式中创建表。 CREATE ANY TABLE:在任何模式中创建表。 ALTER ANY TABLE:修改任何模式中的表。 DROP ANY TABLE:删除任何模式中的表。 SELECT ANY TABLE:查看任何模式中的表数据。 UPDATE ANY TABLE:修改任何模式中的表数据。 DELETE ANY TABLE:具有CREATE TABLE权限的用户自然拥有删除该表对象的权限,其他如CREATE PROCEDURE、CREATE FUNCTION类似。在创建表时必须为表分配表空间
7、配额,或者对表空间具有无限制使用权利,如UNLIMITED TABLESPACE。 3.与会话相关。 CREATE SESSION:建立数据库会话的权利。 ALTER SESSION:修改数据库会话的权利。 注意:一个新用户创建后,首先需要授予CREATE SESSION权限它可以访问数据库。 4.与表空间相关。 CREATE TABLESPACE:创建表空间。 ALTER TABLESPACE:修改表空间。 DROP TABLESPACE:删除表空间。 UNLIMITED TABLESPACE:允许使用所有表空间的权限。 授予系统权限 要授予用户系统权限需要使用GRANT指令的SQL语句,被
8、授予了权限的用户在一定授权下可以继续将系统权限赋予其他用户。下面是赋予用户权限的语法格式。 GRANT system_privilege | role , system_privilege | role TO user | role | PUBLIC , user | role | PUBLIC WITH ADMIN OPTION 创建两个用户jane和larry并赋予用户系统权限。 SYSDBA和SYSOPER系统特权 Oracle提供了两个特殊的系统权限,即SYSDB权限和SYSOPER权限,在做系统维护时建议使用这两种系统权限登陆数据库。用户通过SYSDBA连接到数据库时,它具有对数据库
9、的一切特权。下面是两种系统特权的典型数据库操作。 SYSDBA系统特权相关的操作: SYSOPER PRIVILEGES WITH ADMIN OPTION:具有SYSOPER所具有的操作,并且可以将这些特权赋予其他用户。 CREATE DATABASE:创建数据库。 ALTER DATABASE BEGIN/END BACKUP:将数据库置于备份状态。 RESTRICTED SESSION:设置会话限制。 RECOVER DATABASE UNTIL:介质恢复数据库到UNTIL指定的状态。 SYSOPER系统特权相关的操作: STARTUP:启动数据库。 SHUTDOWN:关闭数据库。 AL
10、TER DATABASE OPEN | MOUNT:将数据库切换到打开|挂起状态。 ALTER DATABASE BACKUP CONTROLFILE TO:备份控制文件。 RECOVER DATABASE:介质恢复数据库。 ALTER DATABASE ARCHIVELOG:将数据库设置为归档模式。 回收用户权限 如果需要限制某个用户的权限可以回收权限,使用REVOKE指令,回收用户权限的语法格式如下所示。 REVOKE system_privilege | role , system_privilege | role FROM user | role | PUBLIC ,user | ro
11、le | PUBLIC 示例1. 查询用户JANE和LARRY的系统权限。 select * 2 from dba_sys_privs 3 where grantee IN (JANE,LARRY) 4* order by grantee 2. 回收用户LARRY的系统权限。 已连接。 revoke create session,select any table 2 from larry;3. 回收级联的用户权限的一点说明 甲-已-丙 甲-X-丙 授予对象权限 和系统权限相对应的是对象权限,对象包括表、视图(物化视图)、序列号和存储过程等。在这些数据库对象上实现某种特殊的行为的权限称为对象权限
12、,如对于一个表可以更改表的结构,删除表或更新表中的数据行等。Oracle的对象权限包括:ALTER、DELETE、EXECUTE、INDEX、INSERT、REFERENCES、SELECT和UPDATE。而这些对象权限适用于不同的数据库对象。 给出对象授权的语法格式: GRANT object_privilege ( column_list ) , object_privilege ( column_list) | ALL PRIVILEGE ON schema. object TO user | role | PUBLIC , user | role |PUBLIC WITH GRANT
13、OPTION GRANT:授权关键字。 Object_privilege:对象权限 Column_list:对象权限操作的列的列表。 All:将当前用户的某个数据库对象的所有权限赋予新用户。 On object:说明具体的数据库对象,如表或存储过程。With grant option:新用户可以继续授权 示例:把SCOTT用户的EMP表象权限UPDATE赋予新用户LARRY connect scott/tigerbjyzz grant update on emp 2 to larry with grant option; 把对表DEPT的列的UPDATE对象权限赋予用户sophie。 gran
14、t update(dname,loc) on dept to sophie; 使用数据字典USER_COL_PRIVS_MADE查看相关列的权限赋予信息。 2 from u回收对象权限出于安全的考虑,如果一个用户不需要某种对象权限可以使用REVOKE指令回收用户的对象权限。如下是回收对象权限的语法格式:REVOKE object_privilege , object_privilege | ALL PRIVILEGE ON schema. objectFROM user | role | PUBLIC CASCADE CONSTRAINTS 回收用户LARRY对EMP表的UPDATE对象权限 conn scott/tigerbjyzz revoke update on emp 2 from larry ;ser_col_privs_made;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1