程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle學習筆記13--控制用戶權限

Oracle學習筆記13--控制用戶權限

編輯:Oracle教程

數據庫控制語言的功能室控制用戶對數據庫的存取權限。用戶對某類數據具有何種操作權限是有DBA決定的。Oracle

通過GRANT語句完成權限的授予,通過REVOKE語句完成對權限的收回。

權限分為系統權限和對象權限;系統權限是對於數據庫的權限,對象權限是操作數據庫對象的權限。

創建用戶

基本語法:

CREATE USER user_name

IDENTIFIED BY password;

在用戶創建成功之後,系統管理員DBA會賦予用戶一些權限,來完成相應的操作。不具有某些操作權限的用戶,是無

法完成操作的。

例:創建用戶test ,密碼:test001

create user test
identified by test001

但是讓使用上面創建的用戶和密碼進行登錄時確無法登錄成功。因為該沒用沒有create session 權限。要授予該權限則要使用grant語句。

授予權限

基本語法:

GRANT 權限1 ,權限2,... TO user_name ;

應用程序開發者,一般應該具有以下權限:

CREATE SESSION(創建會話) CREATE TABLE(創建表) CREATE SEQUENCE(創建序列) CREATE VIEW(創建視圖) CREATE PROCEDURE(創建過程)

例:給test用戶授予創建會話權限。

grant create session to test ;

將create session 賦予用戶之後,就可以正常的與數據庫連接了,表示已經創建了一個session 會話。此時如果該用

戶要創建表,序列,視圖,則要授予上面的全部權限。在授予了create table 的權限之後,還是無法創建表的,因為

此時是沒有表空間。還要分配表空間才能創建表。

上面的操作還是比較的繁瑣的,其實可以把多個權限封裝成一個角色,在把該角色賦予給用戶。

角色

創建角色:

CREATE ROLE testrole ;

為角色賦予權限:

GRANT CREATE TABLE , CREATE VIEW TO testrole ;

將角色授予用戶:

GRANT testrole TO test ;

Oracle 中提供了兩個主要的角色:CONNECT ,RESOURCE 。可以直接將這個兩個角色授予給用戶。

修改用戶密碼

基本語法

ALTER USER user_name

IDENTIFIED BY new_password ;

來修改密碼。

分配對象權限

不同的對象具有不同的對象權限,對象的擁有者擁有所有權限,對象的擁有者可以向外分配權限。基本語法:
GRANT 操作 ON 其他用戶.表名 TO 用戶

例:如果test用戶想要訪問scott用戶下的emp表,並進行查詢、刪除,則要取得訪問該表的權限。

GRANT select , delete ON scott.emp TO test ;

此時test用戶,便可以對emp表進行查詢和刪除操作 了 。

WITH GRANT OPTION 和PUBLIC 關鍵字。with grant option 是被授權的用戶還可將獲得的權限在授給其他

的用戶。public 是為所有的用戶都分配權利。

回收權限

基本語法

rovoke 權限 on 用戶.表名稱 from 用戶 ;

例:回收test用戶獲得查詢和刪除權限

revoke select ,delete on scott.emp from test ;

除了使用語句創建權限之外,也可以直接在Enterprise Manager console 下進行創建。不在贅述。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved