天天看點

【轉】Oracle 權限設定

Oracle 權限設定

一、權限分類:

系統權限:系統規定使用者使用資料庫的權限。(系統權限是對使用者而言)。

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

二、系統權限管理:

1、系統權限分類:

DBA: 擁有全部特權,是系統最高權限,隻有DBA才可以建立資料庫結構。

RESOURCE:擁有Resource權限的使用者隻可以建立實體,不可以建立資料庫結構。

CONNECT:擁有Connect權限的使用者隻可以登入Oracle,不可以建立實體,不可以建立資料庫結構。

對于普通使用者:授予connect, resource權限。

對于DBA管理使用者:授予connect,resource, dba權限。

2、系統權限授權指令:

[系統權限隻能由DBA使用者授出:sys, system(最開始隻能是這兩個使用者)]

授權指令:SQL> grant connect, resource, dba to 使用者名1 [,使用者名2]...;

[普通使用者通過授權可以具有與system相同的使用者權限,但永遠不能達到與sys使用者相同的權限,system使用者的權限也可以被回收。]

例:

SQL> connect system/manager

SQL> Create user user50 identified by user50;

SQL> grant connect, resource to user50;

查詢使用者擁有哪裡權限:

SQL> select * from dba_role_privs;

SQL> select * from dba_sys_privs;

SQL> select * from role_sys_privs;

删除使用者:SQL> drop user 使用者名 cascade;  //加上cascade則将使用者連同其建立的東西全部删除

3、系統權限傳遞:

增加WITH ADMIN OPTION選項,則得到的權限可以傳遞。

SQL> grant connect, resorce to user50 with admin option;  //可以傳遞所獲權限。

4、系統權限回收:系統權限隻能由DBA使用者回收

指令:SQL> Revoke connect, resource from user50;

說明:

1)如果使用WITH ADMIN OPTION為某個使用者授予系統權限,那麼對于被這個使用者授予相同權限的所有使用者來說,取消該使用者的系統權限并不會級聯取消這些使用者的相同權限。

2)系統權限無級聯,即A授予B權限,B授予C權限,如果A收回B的權限,C的權限不受影響;系統權限可以跨使用者回收,即A可以直接收回C使用者的權限。

三、實體權限管理

1、實體權限分類:select, update, insert, alter, index, delete, all  //all包括所有權限

execute  //執行存儲過程權限

user01:

SQL> grant select, update, insert on product to user02;

SQL> grant all on product to user02;

user02:

SQL> select * from user01.product;

// 此時user02查user_tables,不包括user01.product這個表,但如果查all_tables則可以查到,因為他可以通路。

2. 将表的操作權限授予全體使用者:

SQL> grant all on product to public;  // public表示是所有的使用者,這裡的all權限不包括drop。

[實體權限資料字典]:

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;   // 授出權限的表(授出的權限)

3. DBA使用者可以操作全體使用者的任意基表(無需授權,包括删除):

DBA使用者:

SQL> Create table stud02.product(

 id number(10),

 name varchar2(20));

SQL> drop table stud02.emp;

SQL> create table stud02.employee

 as

 select * from scott.emp;

4. 實體權限傳遞(with grant option):

SQL> grant select, update on product to user02 with grant option; // user02得到權限,并可以傳遞。

5. 實體權限回收:

SQL>Revoke select, update on product from user02;  //傳遞的權限将全部丢失。

說明

1)如果取消某個使用者的對象權限,那麼對于這個使用者使用WITH GRANT OPTION授予權限的使用者來說,同樣還會取消這些使用者的相同權限,也就是說取消授權時級聯的。

Oracle 使用者管理

一、建立使用者的Profile檔案

SQL> create profile student limit  // student為資源檔案名

 FAILED_LOGIN_ATTEMPTS  3  //指定鎖定使用者的登入失敗次數

 PASSWORD_LOCK_TIME 5  //指定使用者被鎖定天數

 PASSWORD_LIFE_TIME 30  //指定密碼可用天數

二、建立使用者

SQL> Create User username

 Identified by password

 Default Tablespace tablespace

 Temporary Tablespace tablespace

 Profile profile

 Quota integer/unlimited on tablespace;

例:

SQL> Create user acc01

 identified by acc01   // 如果密碼是數字,請用雙引号括起來

 default tablespace account

 temporary tablespace temp

 profile default

 quota 50m on account;

SQL> grant connect, resource to acc01;

[*] 查詢使用者預設表空間、臨時表空間

SQL> select username, default_tablespace, temporary_tablespace from dba_users;

[*] 查詢系統資源檔案名:

SQL> select * from dba_profiles;

資源檔案類似表,一旦建立就會儲存在資料庫中。

SQL> select username, profile, default_tablespace, temporary_tablespace from dba_users;

SQL> create profile common limit

 failed_login_attempts 5

 idle_time 5;

SQL> Alter user acc01 profile common;

三、修改使用者:

SQL> Alter User 使用者名

 Identified 密碼

1、修改密碼字:

SQL>Alter user acc01 identified by "12345";

2、修改使用者預設表空間:

SQL> Alter user acc01 default tablespace users;

3、修改使用者臨時表空間

SQL> Alter user acc01 temporary tablespace temp_data;

4、強制使用者修改密碼字:

SQL> Alter user acc01 password expire;

5、将使用者加鎖

SQL> Alter user acc01 account lock;  // 加鎖

SQL> Alter user acc01 account unlock;  // 解鎖

四、删除使用者

SQL>drop user 使用者名;  //使用者沒有建任何實體

SQL> drop user 使用者名 CASCADE;  // 将使用者及其所建實體全部删除

*1. 目前正連接配接的使用者不得删除。

五、監視使用者:

1、查詢使用者會話資訊:

SQL> select username, sid, serial#, machine from v$session;

2、删除使用者會話資訊:

SQL> Alter system kill session 'sid, serial#';

3、查詢使用者SQL語句:

SQL> select user_name, sql_text from v$open_cursor;

Oracle 角色管理

一、何為角色

  角色。角色是一組權限的集合,将角色賦給一個使用者,這個使用者就擁有了這個角色中的所有權限。

二、系統預定義角色

  預定義角色是在資料庫安裝後,系統自動建立的一些常用的角色。下介簡單的介紹一下這些預定角色。角色所包含的權限可以用以下語句查詢:

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 role1;

2.授權給角色

sql>grant create any table,create procedure to role1;

3.授予角色給使用者

sql>grant role1 to user1;

4.檢視角色所包含的權限

sql>select * from role_sys_privs;

5.建立帶有密碼以角色(在生效帶有密碼的角色時必須提供密碼)

sql>create role role1 identified by password1;

6.修改角色:是否需要密碼

sql>alter role role1 not identified;

sql>alter role role1 identified by password1;

7.設定目前使用者要生效的角色

(注:角色的生效是一個什麼概念呢?假設使用者a有b1,b2,b3三個角色,那麼如果b1未生效,則b1所包含的權限對于a來講是不擁有的,隻有角色生效了,角色内的權限才作用于使用者,最大可生效角色數由參數MAX_ENABLED_ROLES設定;在使用者登入後,oracle将所有直接賦給使用者的權限和使用者預設角色中的權限賦給使用者。)

sql>set role role1;//使role1生效

sql>set role role,role2;//使role1,role2生效

sql>set role role1 identified by password1;//使用帶有密碼的role1生效

sql>set role all;//使用該使用者的所有角色生效

sql>set role none;//設定所有角色失效

sql>set role all except role1;//除role1外的該使用者的所有其它角色生效。

sql>select * from SESSION_ROLES;//檢視目前使用者的生效的角色。

8.修改指定使用者,設定其預設角色

sql>alter user user1 default role role1;

sql>alter user user1 default role all except role1;

詳見oracle參考文檔

9.删除角色

sql>drop role role1;

角色删除後,原來擁用該角色的使用者就不再擁有該角色了,相應的權限也就沒有了。

本文來自CSDN部落格,轉載請标明出處:http://blog.csdn.net/junmail/archive/2009/07/26/4381287.aspx