1、 創建用戶、修改密碼、刪除用戶
在 oracle 中要創建一個新的用戶使用 create user 語句,一般是具有 dba(數據庫管理員sysdba)的權限才能使用。
問題:創建好的用戶無法正常登錄?
oracle 中用戶建立后是無法正常登錄的,只有在數據庫管理員(DBA)對用戶分配相應的權限后,用戶才可以登錄。
1)創建用戶
語法結構:create user 用戶名 identified by 密碼 【default tablespace 表空間名】【temporary tablespace temp】
建議創建用戶的時候指定表空間。
2)表空間
創建表空間
create tablespace temp datafile 'E:\oracle_tablespace\englishapp\temp.dbf' size 150M autoextend on next 5M maxsize 3000M;--自動增長
/*重新給用戶PRDFPSRV指定默認表空間,必須是dba(數據庫管理員sysdba)用戶登錄操作*/
alter user 用戶 default tablespace 表空間;
//登錄用戶后,查看表當前所屬表空間
select table_name,tablespace_name from user_tables;
//登錄用戶后,批量修改當前登錄用戶下的表存放的表空間,將以下查詢出的語句復制出來再執行
SELECT 'alter table '||TABLE_NAME||' move tablespace 正確的空間名;' FROM USER_TABLES WHERE TABLESPACE_NAME = '錯誤的表空間名'
//對用戶寫的表插入數據顯示ORA-01950對表空間XXX無權限;解決方案2種,如下:
解決方案1,登錄dba(數據庫管理員sysdba)用戶,執行:
alter user 用戶名 quota unlimited on 表空間;
解決方案2,登錄表空間對應的本身用戶,執行:
grant unlimited tablespace to 用戶名;
//刪除表空間與表空間文件(注意:如果在創建表空間的時候帶有雙引號,則刪除的時候也要帶上)
DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES;
前提:刪除表空間之前要確認該表空間沒有被其他用戶使用之后再做刪除
drop tablespace temp including contents and datafiles cascade onstraints;
//including contents 刪除表空間中的內容,如果刪除表空間之前表空間中有內容,而未加此參數,表空間刪不掉,所以習慣性的加此參數
//including datafiles 刪除表空間中的數據文件
//cascade constraints 同時刪除tablespace中表的外鍵參照
3) 給用戶修改密碼
概述:一般以 dba 的身份(管理員用戶sysdba),如果用其它用戶去刪除用戶則需要具有 alter user權限。
語法結構:alter user 用戶名 identified by 密碼
4)刪除用戶
概述:一般以 dba 的身份去刪除某個用戶,如果用其它用戶去刪除用戶則需要具有 drop user 的權限。
注意:在刪除用戶時, 如果要刪除的用戶,已經創建了表, 那么就需要在刪除的時候帶一個參數 cascade; Cascade 有級聯的作用
語法結構:drop user 用戶名 [cascade]
2、 給用戶分配權限、角色
概述:創建的新用戶是沒有任何權限的,甚至連登錄的數據庫的權限都沒有,需要為其指定相應的權限。給一個用戶賦權限使用使令 grant,回收權限使用命令 revoke。
可參考這篇:Oracle權限管理詳解
賦權限語法結構:grant 權限/角色 to 用戶名;
回收權限語法結構:revoke 權限/角色 from 用戶名;
1)權限指執行特定類型SQL命令或訪問其他對象的權利(系統權限、對象權限)
系統權限:允許用戶執行某些數據庫管理相關的權限
create session(登錄權限)
create table(創建表權限)
create index(創建索引權限)
create view(創建視圖權限)
create sequence(創建序列權限)
create trriger(創建觸發器權限)
對象權限:允許用戶對某一特定對象執行特定的操作,比如對表的增刪改查(insert 增、delete 刪、update 改、select 查);
--使用其他用戶的sequence
1、 賦予權限:GRANT SELECT ON SEQ_NAME TO 數據庫其他用戶; 2、 撤銷權限:REVOKE SELECT ON SEQ_NAME FROM XXX;
--使用其他用戶的表
grant select, insert, update, delete, references, alter, index, debug, read on 表名 to 數據庫其他用戶;
2)角色是具有名稱的一組權限的組合,分為:預定義角色和自定義角色。
自定義角色:按需要定制一定權限形成角色,可以作為預定義角色的補充。來滿足用戶的需求。
預定義角色:把常用的權限集中起來,形成角色。常見的角色有:dba、connect、resource等;一般情況下普通用戶有connect和resource的角色就夠了。
CONNECT角色:臨時用戶,是授予用戶的最基本的權利,能夠連接到 oralce 數據庫中,在對其他用戶的表有訪問權限時,做 SELECT、UPDATE、INSERTT 等操作。
Create session --建立會話;
Alter session --修改會話;
Create view --建立視圖。
Create sequence --建立序列等權限
RESOURCE角色:更為可靠和正式的用戶;具有創建表、序列、視圖等權限。
Create table --建表;
Create trigger --建立促發器;
Create procedure --建立過程;
Create sequence --立序列;
Create type --建立類型等權限;
DBA角色:數據庫管理員角色,擁有管理數據庫的最高權限