首页 > 代码库 > Oracle用户与权限管理

Oracle用户与权限管理

  • 权限分类

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:收回用户scottCONNECT角色

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表的访问权限赋给用户SCOTTSCOTT用户可以继承

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管理用户:授予connectresource, 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 数据库实例名

本文出自 “oralce学习之路” 博客,请务必保留此出处http://dushuai.blog.51cto.com/9461011/1577260

Oracle用户与权限管理