Oracle DCL(Data Control Language)数据控制语言(权限privilege,角色role,用户user介绍)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle DCL(Data Control Language)数据控制语言(权限privilege,角色role,用户user介绍)相关的知识,希望对你有一定的参考价值。

1、如何控制用户访问

1、身份验证,认证:Authentication

2、授权:Authorization

3、审计:Audit


 

2、权限

  • 数据库安全:
    • -系统安全
    • -数据安全
  • 系统权限:数据库中执行一个特定操作
  • 对象权限:操纵数据库的对象的内容
  • 可用的系统权限有100多个
  • 数据库管理员有高层次的系统权限,可以完成
    • -创建一个新用户
    • -删除用户
    • -删除表
    • -备份表

 

3、创建用户

DBA使用CREATE USER语句创建用户

CREATE USER user identified BY password

SQL> create user wendy identified by wendy;

 

User created.

 

 

4、用户被创建后,DBA可以对用户授予特殊的系统权限.

一个应用程序开发者,可能有如下系统权限:

  • CREATE SESSION
  • CREATE TABLE
  • CREATE SEQUENCE
  • CREATE VIEW
  • CREATE PROCEDURE

用户被创建后,DBA可以对那个用户授予特殊的系统权限.

GRANT privilege [, privilege…]

To user [, user| role, PUBLIC…];

授予系统权限

DBA能授予某系统权限给用户

SQL> GRANT create session,create table,create sequence,create view to wendy;

 

Grant succeeded.

 

5、什么是角色Role

 

  • 数据库系统是role-base基于角色的系统.
    • 角色权限的集合.
  • 操作系统中是基于组的系统,操作系统是用户group.
    • 用户的集合.
  • 可以将权限赋予一个用户,也可以将角色赋予一个用户.
  • 创建一个角色;

CREATE ROLE manager;

  • 赋予给角色一个权限;

GRANT create table, create view To manager;

  • 赋予一个角色给用户;

GRANT manager To wendy, gaga;

SQL> create role manager;

 

Role created.

 

SQL> grant create table,create view to manager;

 

Grant succeeded.

 

SQL> grant manager to wendy;

 

Grant succeeded.

技术分享

 


 

6、修改你的密码

DBA创建你的用户帐号和初始化你的密码

你能使用ALTER USER语句改变密码

ALTER USER wendy

IDENTIFIED BY wendypassword;

7、什么是对象,什么是对象权限?

TABLEVIEW,Sequence 等为对象,在对象上的权限为对象权限,这个权限不是全局的.系统权限是全局的.

每种对象的权限都不同

对象宿主拥有在对象上全部的权限

对象宿主能授予对象权限给其他用户.

GRANT    object_priv[(columns)]

ON           object

TO            {user|role|PUBLIC}

[WITH GRANT OPTION];

技术分享

 


赋予对象权限

在t表中赋予查询特权:

GRANT select

ON         t

TO         wendy;

赋予更新某列的特权给用户和角色:

GRANT update(id,name)

ON           t

TO           wendy,manager;

SQL> grant select

  2 on t

 3 to wendy;

 

Grant succeeded.

 

SQL> grant update(id,name)

 2 on t

 3 to wendy,manager;

 

Grant succeeded.

 

8传递特权

授予用户给其他用户权限的权限:

GRANT select,insert

ON         t

TO         wendy

WITH     GRANT OPTION;

SQL> grant select,insert

 2 on t

 3 to wendy

 4 with grant option;

 

Grant succeeded.

允许系统上的所有用户从wendy的t表中查询数据:

GRANT select

ON         wendy.t

TO          PUBLIC;

SQL> grant select

 2 on wendy.t

 3 to public;

 

Grant succeeded.

------------注意:wendy.t是指wendy用户下的t表,所以一定要保证这个用户下有这张表

 

9、检查赋予的特权

数据字典视图

描述

ROLE_SYS_PRIVS

授予角色的系统权限

ROLE_TAB_PRIVS

授予角色的表权限

USER_ROLE_PRIVS

授予用户的角色

USER_SYS_PRIVS

授予用户的系统权限

USER_TAB_PRIVS_MADE

用户对象上授予的权限

USER_TAB_PRIVS_RECD

授予用户的对象权限

USER_COL_PRIVS_MADE

用户某列上授予的对象权限

USER_COL_PRIVS_RECD

授予用户某列上的对象权限

 

 

10、撤销对象权限

使用revoke语句来撤销曾赋予给用户的权限

通过WITH GRANT OPTION子句被传递给其他用户的权限也被撤销

Revoke{privilege [, privilege…]| ALL}

ON           object

FROM       {user[,user…] | role| PUBLIC}

[CASCADE constraints];

CASCADE表示把他下面依赖的权限都撤销.

 

在wendy的表中,撤销SELECT和INSERT权限

REVOKE   select,insert

ON            t

FROM      wendy;

 

11、总结

语句

解释

Create user

Creates a user(usually performed by a DBA)

Grant

Gives other users privileges to access the objects

Create role

Creates a collection of privileges, usually performed by a DBA

Alter user

Changes a user‘s password

Revoke

Removes privileges on an object from users

以上是关于Oracle DCL(Data Control Language)数据控制语言(权限privilege,角色role,用户user介绍)的主要内容,如果未能解决你的问题,请参考以下文章

SQL Fundamentals || DCL(Data Control Language) || 角色ROLES

MySQL之DCL(Data Control Language)

MySQL之DCL(Data Control Language)

MySQL之DCL(Data Control Language)

MySQL之DCL(Data Control Language)

SQL Fundamentals || DCL(Data Control Language) || 用户管理&Profile概要文件