Oracle_用戶-受權-角色

Oracle建立用戶及表空間

1. 用戶

建立用戶:

sql> create user <用戶名> IDENTIFIED BY <用戶密碼> default tablespace <表空間名稱> temporary tablespace TEMP profile DEFAULT;

temporary tablespace TEMP --指定臨時表空間默認TEMPsql

password expire; --密碼過時須要重設密碼,意思是當你用這個新創建的密碼過時用戶首次登陸後,系統會提示你從新輸入新密碼,否則會拒絕你登錄,重設新密碼後就能夠登陸,該用戶的密碼就是你新設的密碼,至關於首次登陸修改密碼這樣的選項數據庫

修改用戶:

  1. 修改密碼:
sql> alter user <用戶名> identified by "<密碼>";
  1. 修改用戶缺省表空間:
sql> alter user <用戶名> default tablespace <表空間名稱>;
  1. 修改用戶臨時表空間
sql> alter user <用戶名> temporary tablespace <臨時表空間名稱>;
  1. 強制用戶修改密碼:
sql> alter user <用戶名> password expire;
  1. 將用戶加鎖:
sql> alter user <用戶名> account lock;		--加鎖
sql> alter user <用戶名> account unlock;	--解鎖

刪除用戶:

sql> drop user <用戶名> CASCADE;

將用戶及其所建實體所有刪除安全

監視用戶:

  1. 查詢用戶會話信息:
sql> select username, sid, serial#, machine from v$session;
  1. 刪除用戶會話信息:
sql> alter system kill session 'sid, serial#';
  1. 查詢用戶執行SQL:
sql> select user_name, sql_text from v$open_cursor;

2. 權限

權限說明:

  1. 系統權限:系統規定用戶使用數據庫的權限。(系統權限是對用戶而言)。

DBA: 擁有所有特權,是系統最高權限,只有DBA才能夠建立數據庫結構。
RESOURCE:擁有Resource權限的用戶只能夠建立實體,不能夠建立數據庫結構。
CONNECT:擁有Connect權限的用戶只能夠登陸Oracle,不能夠建立實體,不能夠建立數據庫結構。session

對於普通用戶:授予connect, resource權限。
對於DBA管理用戶:授予connect,resource, dba權限。oracle

  1. 實體權限:某種權限用戶對其它用戶的表或視圖的存取權限。(是針對表或視圖而言的)。

實體權限分類:select, update, insert, alter, index, delete, allapp

all --包括全部權限
execute --執行存儲過程權限ide

用戶受權

  1. 將表的操做權限授予全體用戶:
sql> grant all on product to public; 
--public表示是全部的用戶,這裏的all權限不包括drop。
  1. 指定用戶受權:
sql> grant connect,resource,dba to <用戶名>,<用戶名2>;
  1. 級聯用戶受權:
sql> grant connect to <用戶名> with admin option;
  1. 實體權限收回:
sql> revoke select, update on product from <用戶名>; 
--傳遞的權限將所有丟失。

with admin option --被授予該權限的用戶有權將某個權限(如create any table)授予其餘用戶或角色,取消是不級聯的。給一個用戶授予系統權限帶上with admin option 時,此用戶可把此係統權限授予其餘用戶或角色,但收回這個用戶的系統權限時,這個用戶已經授予其餘用戶或角色的此係統權限不會因傳播無效,如授予A系統權限create session with admin option,而後A又把create session權限授予B,但管理員收回A的create session權限時,B依然擁有create session的權限,但管理員能夠顯式收回B create session的權限,即直接revoke create session from B.工具

with grant option --權限賦予/取消是級聯的,對象受權時,被授予的用戶也可把此對象權限授予其餘用戶或角色,不一樣的是但管理員收回用with grant option受權的用戶對象權限時,權限會因傳播而失效,如:grant select on <表名> to A with grant option;,A用戶把此權限授予B,但管理員收回A的權限時,B的權限也會失效,但管理員不能夠直接收回B的SELECT ON TABLE 權限。ui

其餘說明:

DBA用戶能夠操做全體用戶的任意基表(無需受權,包括刪除)this

  1. 用戶能夠查詢到的全部表:
sql> select owner, table_name from all_tables
  1. 查詢用戶建立的表:
sql> select table_name from user_tables;
  1. 獲權能夠存取的表(被受權的)
sql> select grantor, table_schema, table_name, privilege from all_tab_privs;
  1. 授出權限的表(授出的權限)
sql> select grantee, owner, table_name, privilege from user_tab_privs;

3. 角色

角色:角色是一組權限的集合,將角色賦給一個用戶,這個用戶就擁有了這個角色中的全部權限。
預約義角色:是在數據庫安裝後,系統自動建立的一些經常使用的角色。

  1. 角色所包含的權限能夠用如下語句查詢:
sql> select * from role_sys_privs where role='<角色名>';

經常使用角色說明:

1.CONNECT, RESOURCE, DBA
這些預約義角色主要是爲了向後兼容。其主要是用於數據庫管理。oracle建議用戶本身設計數據庫管理和安全的權限規劃,而不要簡單的使用這些預約角色。未來的版本中這些角色可能不會做爲預約義角色。

2.DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, SELECT_CATALOG_ROLE
這些角色主要用於訪問數據字典視圖和包。

3.EXP_FULL_DATABASE, IMP_FULL_DATABASE
這兩個角色用於數據導入導出工具的使用。

4.AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLE
AQ:Advanced Query。這兩個角色用於oracle高級查詢功能。

5. SNMPAGENT
用於oracle enterprise manager和Intelligent Agent

6.RECOVERY_CATALOG_OWNER
用於建立擁有恢復庫的用戶。關於恢復庫的信息,參考oracle文檔《Oracle9i User-Managed Backup and Recovery Guide》

7.HS_ADMIN_ROLE
A DBA using Oracle's heterogeneous services feature needs this role to access appropriate tables in the data dictionary.

管理角色

  1. 創建角色:
sql> create role <角色名>;
  1. 受權給角色:
sql> grant create any table,create procedure to <角色名>;
  1. 受權角色給用戶:
sql> grant <角色名> to <用戶名>;
  1. 查看角色所包含的權限:
sql> select * from role_sys_privs;
  1. 建立帶有密碼的角色(在生效帶有密碼的角色時必須提供密碼):
sql> create role <角色名> identified by <密碼>;
  1. 修改角色,是否須要密碼:
sql> alter role <角色名> not identified;
sql> alter role <角色名> identified by <密碼>;
  1. 設置當前用戶要生效的角色:

注:角色的生效是,假設用戶a有b1,b2,b3三個角色,那麼若是b1未生效,則b1所包含的權限對於a來說是不擁有的,只有角色生效了,角色內的權限才做用於用戶,最大可生效角色數由參數MAX_ENABLED_ROLES設定;在用戶登陸後,oracle將全部直接賦給用戶的權限和用戶默認角色中的權限賦給用戶。

--使指定角色生效
sql> set role <角色名1>,<角色名2>;
--使用帶有密碼的角色生效
sql> set role <角色名> identified by <密碼>;
--使用該用戶的全部角色生效
sql> set role all;
--設置全部角色失效
sql> set role none;
--除<角色名>外的該用戶的全部其它角色生效。
sql> set role all except <角色名>;
--查看當前用戶的生效的角色。
sql> select * from SESSION_ROLES;
  1. 修改指定用戶,設置其默認角色:
sql> alter user <用戶名> default role <角色名>;
sql> alter user <用戶名> default role all except <角色名>;
  1. 刪除角色:
sql> drop role <角色名>;
--角色刪除後,原來擁用該角色的用戶就再也不擁有該角色了,相應的權限也就沒有了。

其餘說明

  1. 沒法使用WITH GRANT OPTION爲角色授予對象權限

  2. 可使用WITH ADMIN OPTION 爲角色授予系統權限,取消時不是級聯

4. Oracle 數據字典

  1. 動態數據字典是以v$xxx開始的數據字典,在數據庫中約有150個左右,這些數據字典反映數據庫動態運行情況,在不一樣時間查詢會獲得不一樣的結果。

  2. DBA_*:DBA數據字典是以DBA_xxx表示,該數據字典存儲數據庫結構,查詢DBA數據字典能夠反映數據庫結構設置,管理磁盤空間和表空間、事務與回退段、用戶與表空間等信息。

  3. USER_*:用戶數據字典是以USER_xxx表示,這些數據字典反應用戶所建立的實體信息。如,USER_TABLES、USER_VIEWS,數據庫管理員具備操做全體用戶全部實體的權限,能夠查詢這類數據字典,瞭解用戶所建立實體情況,必要時能夠將用戶建立的不正確的實體刪除。

  4. ALL_*:ALL_xxx類數據字典,表示用戶所建立的實體及用戶有權能夠存取的實體。

經常使用查詢

  1. 查詢全部用戶:
sql> select * from dba_user; 
sql> select * from all_users; 
sql> select * from user_users;
  1. 查看用戶系統權限:
sql> select * from dba_sys_privs; 
sql> select * from all_sys_privs; 
sql> select * from user_sys_privs;
  1. 查看用戶對象權限:
sql> select * from dba_tab_privs;
sql> select * from all_tab_privs;
sql> select * from user_tab_privs;
  1. 查看全部角色:
sql> select * from dba_roles;
  1. 查看用戶所擁有的角色:
sql> select * from dba_role_privs;
sql> select * from user_role_privs;
  1. 查看當前用戶的缺省表空間:
sql> select username,default_tablespace from user_users;
  1. 查看某個角色的具體權限:
sql> grant connect,resource,create session,create view to <角色名>;
  1. 查看"RESOURCE"具備那些權限:
sql> SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE';
相關文章
相關標籤/搜索