Oracle知識整理(二)如何分配許可權和角色

2021-06-23 09:14:57 字數 2371 閱讀 3669

許可權分為系統許可權和物件許可權。系統許可權是指執行特定型別sql命令的的權利。比如使用者具有了create table的許可權,可以在其方案中建表;當具有了create any table,可以在任何方案中建表。物件許可權是指訪問其他方案的權利,使用者可以直接訪問自己方案的物件,但是如果要訪問別的方案的物件,則必須具有物件的許可權。比如scott使用者要訪問jane.emp表(jane方案,emp表),則必須在jane.emp表上具有物件許可權。

角色是相關許可權的命令集合,使用角色的目的主要是為了簡化許可權的管理。

a.系統許可權:關於資料庫連線(database link)、會話(session)、使用者(user)、表空間(tablespace)、角色(role)、資料物件(表、檢視、儲存過程)等這些操作的create、drop和alter。

b.物件許可權:insert --新增 、delete --刪除 (資料)、 alter --修改(修改表結構) 、update --修改(更新資料) 、select --查詢 。也就是增刪改查四大類。

c.角色分為預定義和自定義兩種。預定義是指oracle所提供的角色,常用的包括:connect,resource,dba. 

dba角色具有所有的系統許可權,預設的有dba角色的使用者是sys和system。 這兩個使用者可以將任何系統許可權授予其他使用者。注意一點就是:dba角色沒有啟動關閉資料庫的權利.

connect角色具有一般開發人員需要的大部分許可權,多數情況下,只要給使用者授權connect和resource角色就夠了。那麼connect和resource角色都有什麼許可權呢?這裡沒有必要一一枚舉。我們可通過查詢獲得。那麼如何查詢呢?

如何查詢oracle有多少種角色? select * from dba_roles;

如何查詢oracle有多少種系統許可權和物件許可權? select * from system_privilege_map order by name; select  distinct privilege  from dba_tab_privs;

如何檢視某個使用者有什麼樣的角色?  select * from dba_role_privs where grantee='使用者名稱';

如何檢視乙個角色包括什麼系統許可權和物件許可權? select * from dba_sys_privs where grantee='角色名'; select * from dba_tab_privs where grantee='角色名';

這部分知識在學習過程中是按一條一條規則來的,學完覺得特別亂。我把這裡的東西按照乙個正常的操作過程編成了一條操作線。感覺知識比較清晰了。

a.現在我要使用oracle,必須要有使用者才行。oracle預設建立兩個使用者sys和system.我們可以使用這兩個使用者登入上去,建立自己的使用者,如:create user ken identified by ken.現在我們使用ken來登入會給出錯誤資訊。為什麼?因為ken使用者沒有登入的許可權。現在我們需要給ken授權:grant create session  to ken  with admin option.這樣ken使用者登入就ok了。那麼with admin option能起到什麼作用?這說明被授權的使用者或者是角色還可以將該系統許可權給其他使用者或者角色。

**系統許可權操作:依然採用上面的例子:**登入許可權:revoke  create session  from ken;  系統許可權的**不是級聯的。比如:ken又將登入許可權授予jane,那麼**ken的許可權後,jane依然可以登入。

b.對於物件許可權來說,我們舉個例子:如果我的方案中有一張表emp,現在我想讓ken使用者有許可權來操作我的表。那我怎麼辦?第一種辦法是用dba使用者將操作我的表emp的許可權給ken,這裡需要說明一點:dba使用者可以將任何物件上的物件許可權授予其他使用者。第二種辦法是我自己來做。  如何做? grant select on emp to ken with grant option.這裡我用到了 with grant option.這能起到這樣的作用:ken使用者可以將操作我的表emp的許可權在授予別的使用者。這裡注意一點。它跟with admin option 不同,with grant option只能授予使用者,不能授予角色。

**物件許可權操作:revoke select on emp from ken ;物件許可權的**是級聯的。比如:ken將對emp表查詢的許可權授予jane,那麼**ken的許可權後,jane也不能對emp表進行查詢。

c.角色授權這裡需要兩步:1給角色授權2將角色給某乙個使用者。現在我們將登入許可權給乙個角色:grant  create session  to 角色名;然後把這個角色給使用者ken:grant 角色名 to ken.刪除角色採用 drop role 角色名。

這是我對oracle許可權和角色的知識整理,包括它們是什麼,分類以及如何去用它們。這裡我們要搞明白乙個前提就很好理解:我們要做某一件事必須要有許可權。當我們沒有許可權的時候可以使用系統使用者去做,如果系統授予我們許可權那我們也可以做了。

下面一篇部落格寫如何使用pl/sql程式設計。

oracle 知識整理

刪除使用者 例如建立了乙個使用者 a,要刪除它可以這樣做 connect sys 密碼 as sysdba drop user a cascade 就這樣使用者就被刪除了 使用者修改密碼,解鎖 alter user scott identified by alter user scott accou...

oracle知識整理

外來鍵 foreign key 約束 在建表之後,為表增加外來鍵約束可以像下面這樣操作 為表增加外來鍵約束 1 alert table student 2 add constraint stu fk foreign key classid 3 references class classid 為st...

oracle知識整理

1.檢視當前資料庫的名字 select name from v database 2.檢視當前資料庫例項名 select instance name from v instance 這句不知道有什麼作用,提示sql無效 show parameters instance name 乙個資料庫可以有多個...