模式或方案s實際上是用戶所擁有的數據庫對象的集合
創建於管理用戶
身份驗證
提供了3種身份驗證方法
1.密碼驗證
由於用戶信息和密碼都存儲在數據庫內部,所以使用密碼驗證用戶也稱為數據庫驗證用戶
2.外部驗證
外部驗證是指當用戶視圖鏈接到數據庫時,數據庫會核實用戶名是否為一個有效的數據庫賬號,並且確認該用戶已經完成了操作系統級別的身份驗證
外部驗證用並不在數據庫中存儲一個驗證密碼
3.全局驗證
全局驗證是指用戶不在數據庫中存儲驗證碼,而是通過一種高級安全選項所提供的身份驗證服務來進行的
一般,比較常用的方式是密碼驗證方式
創建用戶
--identified exeternally
表示用戶在操作系統下驗證,在這種情況下,要求該用戶必須與操作系統中所定義的用戶名相同
--identified globally as 'CN=user'
表示用戶名由Oracle安全域中心服務器驗證,CN名字表示用戶的外部名
--quota[integer k[M]][unlimited]] on tablespace_specify
表示用戶在制定表空間中允許占用的最大空間
--profiles profile_name
資源文件的名字
--account lock or account unlock:用戶是否被加鎖,默認情況下不加鎖
如:創建一個用戶,mr,口令mrsoft,並設置默認的表空間為users,臨時表空間為temp的用戶
create user mr identified by mrsoft
dafault tablespace users
temporary tablespace temp;
如:創建一個用戶east,口令mrsoft,默認表空間是users,臨時表空間是temp的用戶,並制定該用戶在tbsp_1表空間上最多可使用的大小為10MB:
create user east identified by mrsoft
default tablespace users
temporary tablespace temp
quota 10m on tbsp_1
/
如果禁止用戶使用某個表空間,則可以通過quota關鍵字設置該表空間的使用限額為0
如:創建用戶df,口令mrsoft,臨時表空間temp,默認表空間tbsp_1,並且該用戶使用tbsp_1表空間不受限制
create user df identified by mrsoft
default tablespace tbsp_1
temporary tablespace temp
quota unlimited on tbsp_1
/
注意:
1.如果沒有為用戶不指定default tablespace子句,Oracle會將system表空間作為用戶默認表空間
2.如果沒有指定temporary tablespace ,Oracle會將數據庫默認臨時表空間作為用戶的臨時表空間
3.如果建立的用戶沒有為表空間指定quota子句,那么用戶在特定表空間上的配額為0,用戶將不能再相應的表空間上建立數據對象
修改用戶:alter...
1.修改用戶的磁盤配額
alter user east quota 20m on tbsp_1;
2修改用戶的口令
alter user east identified by 123456;
3.解鎖被鎖住的用戶
alter user SH account unlock;
刪除用戶
drop user df cascade
cascade:級聯刪除,如果用戶包含數據庫對象,則必須加cascade,此時連同該用戶所擁有的對象一起刪除
用戶權限管理
在創建了用戶之后,只是在Oracle中進行了注冊,這樣的用戶不能連接到數據庫,必須讓具有DBA角色的用戶對該用戶進行授權
權限分類:
系統權限--系統級對數據庫進行存取和使用的機制,SESSSION,DDL(CREATE,ALTER,DROP)...
對象權限--某一用戶對其他對象用戶的表、視圖、序列、存儲過程、函數、包等的操作權限。不同類型的對象具有不同的對象權限,對於某些模式對象,比如簇、索引、觸發器、數據庫連接等沒有相應的實體權限,這些權限由系統權限進行管理。
授權操作
system_privilege_map數據目錄視圖
--with admin option
表示被授權者可以再將權限授予另外的用戶
如:為用戶east 授予連接和開發系統權限,並嘗試使用east連接數據庫:
grant connect,resource to east;
如:在創建用戶dongfang和xifang后,首相system將創建session和table的權限授給dongfang,然后dongfang再將這兩個權限傳遞給xifang,最后通過xifang用戶創建一個數據表
create user dongfang identified by mrsoft default tablespace users quota 10m on users;
create user xifang identified by mrsoft default tablespace users quota 10m on users;
grant create session,create table to dongfang with admin option;
connect dongfang/mrsoft
grant create session,create table to xifang
connect xifang/mrsoft
create table tb_xifang
(
id number,
name varchar2(20)
);
回收系統權限
使用revoke命令可以撤銷用戶不必要的系統權限
如:revoke resource from east
如果DBA用grant命令給用戶A授予系統權限帶有with admin option,則該用戶A有權將系統權限再次授予另外的用戶B。在這種情況,如果DBA使用revoke命令撤銷用戶A的系統權限,則用戶B的系統權限仍然有效
對象授權
如:給用戶xifang授予select ,insert,delete 和update表soctt.emp的權限
grant select,insert,delete,update on scott.emp to xifang
回收對象權限
如:revoke delete,update on scott.emp from xifang;
和授權系統權限不同,如果是wiht admin option授權的用戶,會級聯回收其他用戶
查詢用戶與權限
數據字典名稱 | 說明 |
dba_users | 數據庫用戶基本信息表 |
dba_sys_privs | 已授予用戶或角色的系統權限 |
dba_tab_privs | 數據庫對象上的所有權限 |
user_sys_privs | 登錄用戶可以查看自己的系統權限 |
role_sys_privs | 登錄用戶查看自己的角色 |
all_tables | 用戶可以查看自己的角色 |
user_tab_privs | 用戶自己將哪些基表權限授予哪些用戶 |
all_tab_privs | 哪些用戶給自己授權 |
角色管理
角色是一個獨立的數據庫實體,它包括一組權限。也就是說,角色是包括一個或多個權限的集合,它並不被哪個用戶所擁有。角色可以被授予任何用戶,與可以從用戶中將角色收回
預定義角色
在數據庫系統完成后,由系統自動創建的。
connect
resource
dba
exp_full_database--操作數據庫的導出工具
imp_full_database--操作數據庫的導入工具
一般數據庫管理員分別授予connect,resource,dba
數據庫開發人員:connect resource
創建角色與授權
--identified by exeternally:表示角色名在操作系統下驗證
--identified by globally:表示用戶是Oracle安全域中心服務器來驗證,此角色由全局用戶來使用
如:創建一個名為designer角色,該角色的口令為123456:
create role designer identified by 123456;
grant create view,create table to designer
把角色授給某個用戶
grant designer to dongfang;
管理角色
1.查看角色所包含的權限
role_sys_privs
如:select * from role_sys_privs where role='DESIGNER';
2.修改角色密碼
--取消密碼:alter role designer not identified;
--修改角色密碼:alter role designer identified by mrsoft;
3.設置當前用戶要生效的角色
如:set role designer (identified by mrsoft)
4.刪除角色
如:drop role queryer
角色與權限的查詢
DD--dba_col_privs
數據庫列上的所有權限
DD--session_roles
當前用戶所有有效權限