sql> create user <用戶名> IDENTIFIED BY <用戶密碼> default tablespace <表空間名稱> temporary tablespace TEMP profile DEFAULT;
temporary tablespace TEMP --指定臨時表空間默認TEMPsql
password expire; --密碼過時須要重設密碼,意思是當你用這個新創建的密碼過時用戶首次登陸後,系統會提示你從新輸入新密碼,否則會拒絕你登錄,重設新密碼後就能夠登陸,該用戶的密碼就是你新設的密碼,至關於首次登陸修改密碼這樣的選項數據庫
sql> alter user <用戶名> identified by "<密碼>";
sql> alter user <用戶名> default tablespace <表空間名稱>;
sql> alter user <用戶名> temporary tablespace <臨時表空間名稱>;
sql> alter user <用戶名> password expire;
sql> alter user <用戶名> account lock; --加鎖 sql> alter user <用戶名> account unlock; --解鎖
sql> drop user <用戶名> CASCADE;
將用戶及其所建實體所有刪除安全
sql> select username, sid, serial#, machine from v$session;
sql> alter system kill session 'sid, serial#';
sql> select user_name, sql_text from v$open_cursor;
DBA: 擁有所有特權,是系統最高權限,只有DBA才能夠建立數據庫結構。
RESOURCE:擁有Resource權限的用戶只能夠建立實體,不能夠建立數據庫結構。
CONNECT:擁有Connect權限的用戶只能夠登陸Oracle,不能夠建立實體,不能夠建立數據庫結構。session對於普通用戶:授予connect, resource權限。
對於DBA管理用戶:授予connect,resource, dba權限。oracle
實體權限分類:select, update, insert, alter, index, delete, allapp
all --包括全部權限
execute --執行存儲過程權限ide
sql> grant all on product to public; --public表示是全部的用戶,這裏的all權限不包括drop。
sql> grant connect,resource,dba to <用戶名>,<用戶名2>;
sql> grant connect to <用戶名> with admin option;
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
sql> select owner, table_name from all_tables
sql> select table_name from user_tables;
sql> select grantor, table_schema, table_name, privilege from all_tab_privs;
sql> select grantee, owner, table_name, privilege from user_tab_privs;
角色:角色是一組權限的集合,將角色賦給一個用戶,這個用戶就擁有了這個角色中的全部權限。
預約義角色:是在數據庫安裝後,系統自動建立的一些經常使用的角色。
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 Agent6.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.
sql> create role <角色名>;
sql> grant create any table,create procedure to <角色名>;
sql> grant <角色名> to <用戶名>;
sql> select * from role_sys_privs;
sql> create role <角色名> identified by <密碼>;
sql> alter role <角色名> not identified; sql> alter role <角色名> identified by <密碼>;
注:角色的生效是,假設用戶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;
sql> alter user <用戶名> default role <角色名>; sql> alter user <用戶名> default role all except <角色名>;
sql> drop role <角色名>; --角色刪除後,原來擁用該角色的用戶就再也不擁有該角色了,相應的權限也就沒有了。
沒法使用WITH GRANT OPTION爲角色授予對象權限
可使用WITH ADMIN OPTION 爲角色授予系統權限,取消時不是級聯
動態數據字典是以v$xxx開始的數據字典,在數據庫中約有150個左右,這些數據字典反映數據庫動態運行情況,在不一樣時間查詢會獲得不一樣的結果。
DBA_*:DBA數據字典是以DBA_xxx表示,該數據字典存儲數據庫結構,查詢DBA數據字典能夠反映數據庫結構設置,管理磁盤空間和表空間、事務與回退段、用戶與表空間等信息。
USER_*:用戶數據字典是以USER_xxx表示,這些數據字典反應用戶所建立的實體信息。如,USER_TABLES、USER_VIEWS,數據庫管理員具備操做全體用戶全部實體的權限,能夠查詢這類數據字典,瞭解用戶所建立實體情況,必要時能夠將用戶建立的不正確的實體刪除。
ALL_*:ALL_xxx類數據字典,表示用戶所建立的實體及用戶有權能夠存取的實體。
sql> select * from dba_user; sql> select * from all_users; sql> select * from user_users;
sql> select * from dba_sys_privs; sql> select * from all_sys_privs; sql> select * from user_sys_privs;
sql> select * from dba_tab_privs; sql> select * from all_tab_privs; sql> select * from user_tab_privs;
sql> select * from dba_roles;
sql> select * from dba_role_privs; sql> select * from user_role_privs;
sql> select username,default_tablespace from user_users;
sql> grant connect,resource,create session,create view to <角色名>;
sql> SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE';