資料庫控制語言的功能室控制使用者對資料庫的存取許可權。使用者對某類資料具有何種操作許可權是有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 下進行建立。不在贅述。