數據庫控制語言的功能室控制用戶對數據庫的存取權限。用戶對某類數據具有何種操作權限是有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 下進行創建。不在贅述。