oracle 用戶權限、profile及角色的管理

  在oracle數據庫中,用戶和角色與數據庫的權限息息相關,正確掌握對用戶與角色的管理對於數據庫的安裝非常重要,本文主要總結在工作過程中經常用到的用戶及角色的管理操作:
一。用戶的基本管理操作:
1.創建用戶同時指定密碼與默認表空間
create user test identified by test default tablespace users;
2。給用戶可以登錄的系統權限
grant connect to test;
3.回收用戶的權限
revoke connect from test;
4.刪除用戶
drop user test cascade;
5.修改用戶密碼
alter user test identified by newpasswd;
6.修改用戶默認表空間(注意如果在表空間上沒有配額,需要給用戶分配配額)
alter user test default tablespace t1;
SQL> connect test/[email protected]/orcl
Connected.
SQL> create table tb1(id int);
create table tb1(id int)
*
ERROR at line 1:
ORA-01950: no privileges on tablespace 'T1'
給用戶在表空間t1上分配空間:
alter user test quota 10m on t1;
SQL> connect test/[email protected]/orcl
Connected.
SQL> create table tb1(id int);
Table created.

二.使用profile文件實現用戶口令限制與資源限制;
Proflie是口令限制,資源限制的命名集合.建立oracle數據庫時,oracle會自動建立名爲DEFAULT的PROFILE,初始化的DEFAULT沒有進行任何口令和資源限制.使用PROFILE有以下一些主要事項.
a,建立PROFILE時,如果只設置了部分口令或資源限制選項,其他選項會自動使用默認值(DEFAULT的相應選項)
b,建立用戶時,如果不指定PROFILE選項,oracle會自動將DEFAULT分配給相應的數據庫用戶.
c,一個用戶只能分配一個PROFILE.如果要同時管理用戶的口令和資源,那麼在建立PROFILE時應該同時指定口令和資源選項.
d,使用PROFILE管理口令時,口令管理選項總是處於被激活狀態,但如果使用PROFILE管理資源,必須要激活資源限制.
1.查看當前存在的profile文件
select distinct profile from dba_profiles;
查看指定profile文件中各資源的限制情況:
select resource_name,limit from dba_profiles where profile='DEFAULT';
2.修改現在profile文件中資源選項:
alter profile default limit FAILED_LOGIN_ATTEMPTS 1 PASSWORD_LOCK_TIME 3;
3.創建一個新的profile文件:
CREATE PROFILE lock_accout LIMIT FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 10;
4.讓用戶使用新的profile文件:
alter user test profile lock_accout;
5.查看用戶當前使用的profile文件
select username,profile from dba_users;
6.使用profile文件限制用戶對資源的使用;
必須先激活資源限制:
alter system set resource_limit=TRUE scope=memory;
對資源限制做修改:
alter profile lock_accout limit cpu_per_session 5000;
7.刪除profile
drop profile lock-accout;
8.刪除profile並將使用當前profile的用戶profile改爲default
drop profile lock_accout cascade;
9,以下列出所有profile相關參數內容以便於參考:
FAILED_LOGIN_ATTEMPTS:用於指定聯繫登陸的最大失敗次數.
PASSWORD_LOCK_TIME:用於指定帳戶被鎖定的天數.
PASSWORD_LIFE_TIME:用於指定口令有效期
PASSWORD_GRACE_TIME:用於指定口令寬限期.
PASSWORD_REUSE_TIME:用於指定口令可重用時間.
PASSWORD_REUSE_MAX;用於指定在重用口令之前口令需要改變的次數.
PASSWORD_VERIFY_FUNCTION;是否校驗口令(校驗將值改爲VERIFY_FUNCTION)
CPU_PER_SESSION:用於指定每個會話可以佔用的最大CPU時間.
LOGICAL_READS_PER_SESSON:用於指定會話的最大邏輯讀取次數.
PRIVATE_SGA:用於指定會話在共享池中可以分配的最大總計私有空間.需要注意,該選項只使用與共享服務器模式.
COMPOSITE_LIMIT:用於指定會話的總計資源消耗(單位:服務單元).
CPU_PER_CALL:限制每次調用(解析,執行或提取數據)可佔用的最大CPU時間(單位:百分之一秒)
LOGICAL_READS_PER_CALL:用於限制每次調用的最大邏輯I/O次數.
SESSIONS_PER_USER:用於指定每個用戶的最大併發會話個數.
CONNECT_TIME:用於指定會話的最大連接時間.
IDLE_TIME:用於指定會話的最大空閒時間.

三。角色的管理
1.將角色的權限賦予用戶
grant dba,connect,resource to test;
--with admin option與with grant option可將系統或對象權限授權的權限給指定用戶或角色,給用戶賦系統權限可選參數with admin option,回收權限後不會級聯回收,給用戶賦對象權限可選參數with grant option,加回權限後會級聯回收。
2.將角色的權限從用戶處回收
revoke dba,resource from test;
3.將創建會話的權限賦給public角色,public是所有用戶的默認組,所有給public角色的權限會賦予所有用戶
grant connect to public
SQL> connect test/test
ERROR:
ORA-01045: user TEST lacks CREATE SESSION privilege; logon denied
Warning: You are no longer connected to ORACLE.
SQL> connect / as sysdba
Connected.
SQL> grant connect to public;
Grant succeeded.
SQL> connect test/test
Connected.
4.創建自定義的角色
create role testrole;
5.給自定義角色賦權
grant create any table,create any view to testrole;
6.將自定義角色權限給用戶後,角色權限傳遞給用戶
grant testrole to test;
SQL> create table t1(id int);
Table created.
SQL> create view v1 as select *from t1;
View created.
7.查看用戶所屬的角色
 SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE='TEST'
 查看用戶所有的系統權限
 SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='TEST'
 查看角色的系統權限
 select * from role_sys_privs where role='TESTROLE'
 查看角色所屬的角色
 select * from role_role_privs where role='TESTROLE'
 查看用戶在表上的權限
 select * from dba_tab_privs where grantee='TEST'
 查看用戶的列權限
 select * from dba_col_privs WHERE GRANTEE='TEST'
8.刪除角色:
 drop role testrole;

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章