Oracle資料庫教程-使用者與許可權
Oracle 是面向使用者的,在 Oracle 中一般只有一個數據庫DATABASE,可以在資料庫中建立多個不同的使用者USER,給使用者建立許可權和分配角色。而MySQL是面向資料庫的,可以建立多個數據庫,在資料庫中建立表、索引等。
Oracle 建立使用者
Oracle 中可以用 CREATE USER 命令來建立使用者
建立使用者基本語法:
--建立使用者 CREATE USER USERINFO IDENTIFIED BY 123456 ACCOUNT LOCK
詳細語法:
--建立使用者,使用者名稱,一般為字母數字型和“#”及“_”符號;使用者口令,一般由字母數字型和“#”及“_”符號CREATE USER [使用者名稱] IDENTIFIED BY [口令] --如果新建使用者時指定了IDENTIFIED EXTERNALLY,那麼該使用者只能通過作業系統進行身份驗證 OR IDENTIFIED EXETERNALLY --表示使用者名稱由Oracle安全域中心伺服器驗證,CN名字表示使用者的外部名 OR IDENTIFIED GLOBALLY AS ‘CN=user’ --預設表空間,tablespace表空間名稱 [DEFAULT TABLESPACE tablespace] --預設臨時表空間,temptablespace臨時表空間名稱[TEMPORARY TABLESPACE temptablespace] --使用者可以使用的表空間的位元組數 [QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace --使用者可以使用的臨時表空間的位元組數 [,QUOTA [integer K[M] ] [UNLIMITED] ] ON temptablespace --資原始檔名稱 [PROFILES profile_name] --用來設定使用者口令過期、失效,強制使用者登入資料庫時候必須修改口令 [PASSWORD EXPIRE] --使用者是否被加鎖,預設情況下是不加鎖的 [ACCOUNT LOCK or ACCOUNT UNLOCK]
Oracle 分配角色/許可權
一個新建使用者或者新建角色是沒有任何的許可權的,需要手動分配角色和許可權,語法如下:
GRANT 角色|許可權 TO 使用者|角色
常用的系統許可權:
系統許可權 | 許可權操作 |
create user | 建立使用者許可權 |
drop user | 刪除使用者許可權 |
create session | 連線資料庫許可權 |
create view | 建立檢視許可權 |
create sequence | 建立序列許可權 |
create table | 使用者框架建立表許可權 |
create any table | 任意框架建立表許可權 |
drop table | 使用者框架刪除表許可權 |
drop any table | 任意框架刪除表許可權 |
create procedure | 建立儲存過程許可權 |
execute any procedure | 任意框架執行儲存過程許可權 |
create synonym | 建立同義詞許可權 |
為使用者分配系統許可權:
--基本語法 GRANT 許可權1, 許可權2, ... TO user_name ; --為使用者USERINFO 分配連線資料庫、建立使用者和建立檢視的許可權 GRANT create session, create user, create view TO USERINFO ;
為使用者分配某種許可權後,使用者才能進行該許可權的操作,例如上面已經為使用者USERINFO 分配連線資料庫、建立使用者和建立檢視的許可權,但是沒有分配刪除使用者、建立序列等等的許可權,該使用者就不能進行刪除使用者、建立序列...,所以Oracle將許可權進行了封裝,某些許可權封裝成一個角色,再將角色分配給使用者。
常用角色:
CONNECT角色: 是授予終端使用者的典型權利,最基本的權利,能夠連線到Oracle資料庫
ALTER SESSION ------------------ 修改會話
CREATE CLUSTER------------------ 建立聚簇
CREATE DATABASE LINK---------- 建立資料庫連結
CREATE SEQUENCE---------------- 建立序列
CREATE SESSION-------------------建立會話
CREATE SYNONYM---------------- 建立同義詞
CREATE VIEW ----------------------建立檢視
RESOURCE角色: 是授予開發人員的,提供給使用者另外的許可權,如建立他們的表,序列,過程,觸發器,索引等,但不能建立檢視。
CREATE CLUSTER ------------------建立聚簇
CREATE PROCEDURE --------------建立過程
CREATE SEQUENCE ----------------建立序列
CREATE TABLE ---------------------建表
CREATE TRIGGER ------------------建立觸發器
CREATE TYPE ----------------------建立型別
DBA角色:是授予系統管理員的,DBA角色擁有所有的系統許可權,使用者system擁有DBA角色
為使用者分配角色:
--將角色賦予使用者 GRANT CONNECT TO USERINFO;--允許使用者連線資料庫 GRANT RESOURCE TO USERINFO;--允許使用者建立相關的資料庫物件,如表,序列等。 --多個角色賦予一個使用者可合併一條語句 GRANT CONNECT,RESOURCE TO USERINFO;
Oracle 自定義角色
語法:
--建立角色 CREATE ROLE myRole; --為角色賦予許可權 GRANT CREATE TABLE, CREATE VIEW TO myRole; --將角色賦予使用者 GRANT myRole TO USERINFO;
Oracle 回收角色/許可權
基本語法:
--回收角色|許可權語法 ROVOKE 許可權 [on 使用者.表名稱] FROM 使用者; --回收USERINFO使用者的 myRole 角色 ROVOKE myRole FROM USERINFO;
Oracle刪除使用者
一般以dba的身份去刪除某個使用者,如果用其它使用者去刪除使用者則需要具有drop user的許可權。
基本語法:
--刪除使用者:在刪除使用者時,如果要刪除的使用者,已經建立了表,那麼就需要在刪除的時候帶一個引數cascade,即把該使用者及表一同刪除; drop user 使用者名稱 [cascade]; --刪除使用者USERINFO(USERINFO使用者未建立表) drop user USERINFO; --刪除使用者USERINFO(USERINFO使用者已建立表) drop user USERINFO cascade;
Oracle修改使用者
--修改使用者的密碼語法 ALTER USER USERINFO IDENTIFIED BY 654321 --預設為鎖定狀態,解除鎖定 ALERT USER USERINFO ACCOUNT UNLOCK