標籤:系統管理權限 資料庫操作 oracle許可權 oracle系統管理權限 oracle角色
本文主要講解oracle資料庫中的系統管理權限和角色。
oracle許可權分為系統許可權和對象許可權。
一、 系統許可權:
系統許可權是指執行特定sql命令的許可權,它用於控制使用者可以執行一個或一組資料庫操作,比如使用者擁有create table 許可權時可以在其方案下建立表,當擁有create any table 時可以在其他使用者方案下建表。
oracle提供了100多種系統許可權,常用的有:
create session 串連資料庫
create table 建表
create view 建視圖
create trigger 建觸發器
create procedure 建預存程序
顯示系統許可權:可以查詢資料字典視圖system_privilege_map,可以顯示所有系統許可權。
sql> select * from system_privilege_map order by name;
1.授予系統許可權:
一般情況下授予系統許可權是由DBA完成的,如果由其他使用者完成,則該使用者必須有grant any privilege 許可權。在授予系統許可權時,可以帶with admin option 選項,這樣的話被授予許可權或者角色的使用者可以將此許可權或者角色授予其他人。
sql> grant privilege_name to user_name [with admin option];
2.回收系統許可權
一般情況下,回收許可權由DBA完成,如果其他使用者完成回收系統許可權,則要求該使用者擁有該系統許可權及轉授系統許可權的選項(with admin option)。回收系統許可權用revoke命令完成。但是請注意許可權的級聯回收問題,例如,system授予使用者A許可權with admin option,使用者A把許可權授予了使用者B,但是system回收了使用者A的許可權,那麼使用者B還是否擁有許可權呢?我通過實驗得出結論,使用者B還是擁有許可權的,也就是說oracle許可權回收不是級聯的。
sql> revoke privilege_name from user_name;
二、對象許可權
指訪問其他方案對象的權利。使用者可以直接存取自己方案裡的對象,如果想要訪問其他使用者方案裡的對象,則必須有對象許可權。比如使用者A想訪問使用者B上的X表,則必須在X上具有對象的許可權。
常用的有:
alter 修改
delete 刪除
select 查詢
insert 插入
update 修改
index 索引
references 引用
execute 執行
all 所有許可權
顯示對象許可權,通過資料字典視圖可以顯示使用者或者角色所具有的對象許可權,視圖為dba_tab_privs
sql> select * from dba_tab_privs where grantee=‘user_name‘;
1.授予對象許可權
在oracle 9i版本之前,授予對象許可權是由對象的所有者完成的,或者擁有with grant option的使用者完成,在oracle 9i之後,DBA使用者可以將對象許可權授予任何使用者。授予對象許可權用grant命令完成。
sql> grant privilege on user_name1.table_name[(field1,field2)] to user_name2;
2.回收對象許可權
在oracle 9i之後,回收對象許可權是由對象所有者或者DBA使用者完成。但是請注意,對象許可權的回收是級聯的。
三、角色
角色就是相關許可權命令的集合,使用角色就是為了簡化許可權的管理。角色分為預定義和自訂兩類。
預定義就是Oracle定義的角色,自訂是自己根據管理需要所建立的角色。
1. 常用預定義角色介紹
(1) connect
所擁有的許可權:alter session,create cluster,create database link,create session,create table,create view,create sequence
(2) resource
所擁有的許可權:create cluster,create indextype,create table,create sequence,create type,create trigger,create procedure
(3)dba
dba角色具有所有的系統許可權及with admin option 選項,預設的使用者為sys和system,他們可以將系統許可權授予任何使用者,但是dba不具有sysdba和sysoper的特權(啟動和關閉資料庫)。
2.自訂角色
一般是由DBA建立角色,如果其他使用者建立,則需要create role 許可權。在建立角色時可以指定驗證方式(不驗證,資料庫驗證等)
(1)建立角色(不驗證)
如果角色是公用的角色,可以採用不驗證的方式來建立。
sql> create role role_name not identified;
(2)建立角色(資料庫驗證)
採用這樣的方式建立角色,角色名稱、口令存放在資料庫中。當啟用該角色時必須提供口令,在建立角色時需提供口令。
sql> create role role_name identified by password;
3.角色授權
當角色剛建立時是沒有任何許可權的,為了使角色完成特定的任務,需授予其一定的系統許可權和對象許可權。給角色授權與使用者授權沒有多少區別,但要注意,系統許可權的 unlimited tablespace 和對象許可權的with grant option 是不能授予角色的。
sql >grant privilege_name to role_name;
4.為使用者指派角色
一般分配角色是由DBA完成,若普通使用者指派角色,需有grant any role 的系統許可權。用grant命令分配角色。
sql> grant role_name to user_name [with admin option];
5.刪除角色
一般分配角色是由DBA完成,若普通使用者指派角色,需有drop any role 的系統許可權。注意,當角色刪除後,擁有此角色的使用者將不再擁有相對應的許可權。
sql> drop role role_name;
6.顯示角色資訊
顯示所有角色資訊:
sql> select * from dba_roles;
顯示角色所具有的系統許可權:
sql> select privilege,admin_option from role_sys_privs where role=‘role_name‘;
顯示使用者所具有的角色及預設角色:
sql> select granted_role,default_role from dba_role_privs where grantee=‘user_name‘;
本文出自 “飛魚技術” 部落格,請務必保留此出處http://flyingfish.blog.51cto.com/9580339/1583151
Oracle系統管理權限和角色(學習筆記)