1. 程式人生 > >Oracle DCL(Data Control Language)數據控制語言(權限privilege,角色role,用戶user介紹)

Oracle DCL(Data Control Language)數據控制語言(權限privilege,角色role,用戶user介紹)

ati nic ssi control 什麽 span remove insert ade

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介紹)