Oracle用户与权限管理

2015-01-21 12:31:28 · 作者: · 浏览: 2

1、? 系统权限:对于数据库操作的权限,包括但不限于:


CREATE TABLE


CREATE VIEW


CREATE SESSION


CREATE? SEQUENCE


CREATE PROCEDURE


……


2、? 对象权限:对于用户创建的表、视图的访问、修改能操作权限,包括但不限于:


SELECT


UPDATE


INSERT


DELETE


……


权限分配与回收



1、? 权限分配:


GRANT 权限 TO 用户/角色


例1:将对hr用户下employee表的访问权限赋给用户SCOTT


GRANT SELECT ON hr.employee TO scott;


例2:将角色CONNECT分配给用户SCOTT


GRANT CONNECT TO scott


2、? 权限回收:


REVOKE 权限 FROM 用户/角色


例1:收回用户scott对于hr用户employee表的访问权限


REVOKE hr.employee FROM scott;


例2:收回用户scott的CONNECT角色


REVOKE CONNECT FROM scott;


权限继承与回收



1、情景模拟:Oracle总部拥有对于Oracle产品的管理权限,Oracle总部赋予Oracle中国管理中国境内的经营事宜,如果Oracle中国需要二次分配这种权限,可以在总部赋予权限的时候,使用WITH ADMIN OPTION(系统权限继承)/WITH GRANT OPTION(对象权限继承)


例:SYS 赋予用户scott创建表的权限,然后scott可以赋予其他用户创建表的权限


SOL>CONN? SYS


GRANT CREATE TABLE TO scott WITHADMIN OPTION;


说明:


? ? CREATE TABLE属于系统权限,使用关键字WITH ADMIN OPTION赋予权限继承;


此时,SCOTT用户可以对于其他任意用户赋予创建表的权限


SQL>CONN SCOTT


?GRANT CREATE TABLE TOtest;


如果是对象权限的继承则需要使用WITHGRANT OPTION


例:将对hr用户下employee表的访问权限赋给用户SCOTT,SCOTT用户可以继承


SQL>CONN hr


? ? ? ? GRANT SELECT ON hr.employee TO scott WITH GRANT OPTION;


? ? CONN scott


? ? GRANT SELECT ONhr.employee TO test;? --scott用户将权限二次分配给test用户;


2、继承权限回收


? ? 回收权限时,对于系统权限而言,不会回收WITH ADMIN OPTION分配的子权限;


对象权限则会级联回收,比如用户scott用户对hr用户下employe表的访问权限,scott用户又将访问权限二次分配给了新用户test,则回收scott访问权限的同时,系统会自动回收由scott二次分配的访问权限;


常见角色权限与分配原则



1、常见角色


DBA:拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。


RESOURCE:只可以创建实体,不可以创建数据库结构。


CONNECT:只可以登录Oracle,不可以创建实体,不可以创建数据库结构。


2、角色权限分配原则:


对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource, dba权限。


常用的权限查询视图



--1、显示角色拥有的系统权限


SELECT * FROMROLE_SYS_PRIVS;


--2、角色对于表列拥有的权限


SELECT * FROMROLE_TAB_PRIVS;


--3、查询用户所属角色


SELECT * FROMUSER_ROLE_PRIVS;


--4、显示已授予给其他用户的对象权限,用户是当前登录用户


SELECT * FROMUSER_TAB_PRIVS_MADE


--5、显示已授予给其他用户的对象权限,用户是被授予者


SELECT * FROMUSER_TAB_PRIVS_RECD


--6、显示列上已授予的权限,用户是当前登录用户


SELECT * FROMUSER_COL_PRIVS_MADE


--7、显示列上已授予的权限,用户是被授予者


SELECT * FROMUSER_COL_PRIVS_RECD


--8、显示当前登录用户所拥有的系统权限


SELECT * FROMUSER_SYS_PRIVS


用户管理



1、? 创建用户test,密码test


CREATE USER test IDENTIFIED BY test;


2、? 修改用户test密码为123456


ALTER USER test IDENTIFIED BY 123456;


3、? 解锁用户SCOTT


ALTER USER scott ACCOUNT UNLOCK;


创建数据库连接


?



CREATE [PUBLIC] DATABASE LINK 连接名称


CONNECT 用户名 IDENTIFIED BY 登录密码


USING 数据库实例名