當前位置:首頁 » 數據倉庫 » oracle資料庫角色
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

oracle資料庫角色

發布時間: 2022-09-27 13:39:41

㈠ Oracle資料庫為什麼引入角色管理高分送!

為的是基於角色的許可權管理,角色相當與用戶組,把許可權和用戶關聯起來了,使得管理更容易,粒度更好控制

㈡ oracle怎麼查詢當前資料庫的所有角色許可權


確定角色的許可權:
select
*
from
role_tab_privs
;
包含了授予角色的對象許可權
select
*
from
role_role_privs
;
包含了授予另一角色的角色
select
*
from
role_sys_privs
;
包含了授予角色的系統許可權

確定用戶帳戶所授予的許可權:
select
*
from
DBA_tab_privs
;
直接授予用戶帳戶的對象許可權
select
*
from
DBA_role_privs
;
授予用戶帳戶的角色
select
*
from
DBA_sys_privs
;
授予用戶帳戶的系統許可權

查看當前用戶許可權及角色:
sql>
select
*
from
session_privs;
SQL>
select
*
from
user_role_privs;

查詢某一角色的具體許可權:
例如查看RESOURCE具有那些許可權
SQL>
SELECT
*
FROM
DBA_SYS_PRIVS
WHERE
GRANTEE='RESOURCE';

㈢ 如何查詢oracle資料庫中的各種角色

查看當前用戶的角色:select*fromuser_role_privs;

㈣ oracle資料庫怎麼新建用戶,以及設置許可權和角色

新建用戶:
create
user
用戶名;
設置許可權和角色:
grant
許可權
to
用戶名;

㈤ oracle許可權和角色的區別和聯系是什麼

oracle許可權和角色的區別為:性質不同、主要目的不同。許可權和角色的聯系當建立角色時,角色沒有任何許可權,為了使得角色完成特定任務,必須為其授予相應的系統許可權和對象許可權。 每一個角色可以擁有多個許可權,同時一個許可權也可以同時給多個角色擁有。

一、性質不同

1、許可權:許可權是指執行特定類型sql命令或是訪問其它方案對象的權利。

2、角色:角色是相關許可權的命令集合,是具有相同許可權的用戶的抽象實體。

二、主要目的不同

1、許可權:許可權的主要目的是為了約束用戶的操作,不同用戶需要有相應的許可權,才可操作,提高oracle的安全性。

2、角色:角色的主要目的是為了簡化許可權的管理將一組具有相同許可權的用戶組織在一起,統一不同用戶的使用。

(5)oracle資料庫角色擴展閱讀:

為了能初創oracle資料庫系統,新建立的oracle資料庫總是包含一個預定義的角色。 這個角色是"超級用戶", 並且預設時他和初始化該資料庫集群的用戶有相同的名稱。 為了創建更多角色,必須首先以這個初始用戶角色聯接。

每一個和oracle資料庫的連接都必須由一個角色身份進行, 這個角色決定在該連接上發出的命令的初始許可權。和特定資料庫聯接的角色名是由初始化聯接請求的應用以相關的方式聲明。

參考資料來源:

網路——Oracle資料庫

網路——許可權

網路——資料庫角色

㈥ oracle中身份和角色的區別是什麼

許可權和角色的區別在那裡。
當剛剛建立用戶時,用戶沒有任何許可權,也不能執行任何操作。如果要執行某種特定的資料庫操作,則必須為其授予系統的許可權;如果用戶要訪問其它方案的對象,則必須為其授予對象的許可權。為了簡化許可權的管理,可以使用角色。
許可權是指執行特定類型sql命令或是訪問其它方案對象的權利,包括系統許可權和對象許可權兩種。

系統許可權
 系統許可權介紹
系統許可權是指執行特定類型sql命令的權利。它用於控制用戶可以執行的一個或是一組資料庫操作。比如當用戶具有create table許可權時,可以在其方案中建表,當用戶具有create any table許可權時,可以在任何方案中建表。oracle提供了100多種系統許可權。
常用的有:
create session 連接資料庫 create table 建表
create view 建視圖 create public synonym 建同義詞
create procere 建過程、函數、包 create trigger 建觸發器
create cluster 建簇

 顯示系統許可權
oracle提供了100多種系統許可權,而且oracle的版本越高,提供的系統許可權就越多,我們可以查詢數據字典視圖system_privilege_map,可以顯示所有系統許可權。
select * from system_privilege_map order by name;

 授予系統許可權
一般情況,授予系統許可權是由dba完成的,如果用其他用戶來授予系統許可權,則要求該用戶必須具有grant any privilege的系統許可權。在授予系統許可權時,可以帶有with admin option選項,這樣,被授予許可權的用戶或是角色還可以將該系統許可權授予其它的用戶或是角色。為了讓大家快速理解,我們舉例說明:
1.創建兩個用戶ken,tom。初始階段他們沒有任何許可權,如果登錄就會給出錯誤的信息。
create user ken identfied by ken;
2 給用戶ken授權
1). grant create session, create table to ken with admin option;
2). grant create view to ken;
3 給用戶tom授權
我們可以通過ken給tom授權,因為with admin option是加上的。當然也可以通過dba給tom授權,我們就用ken給tom授權:
1. grant create session, create table to tom;
2. grant create view to ken; --ok嗎?不ok

 回收系統許可權
一般情況下,回收系統許可權是dba來完成的,如果其它的用戶來回收系統許可權,要求該用戶必須具有相應系統許可權及轉授系統許可權的選項(with admin option)。回收系統許可權使用revoke來完成。
當回收了系統許可權後,用戶就不能執行相應的操作了,但是請注意,系統許可權級聯收回的問題?[不是級聯回收!]
system --------->ken ---------->tom
(create session)(create session)( create session)
用system執行如下操作:
revoke create session from ken; --請思考tom還能登錄嗎?
答案:能,可以登錄

對象許可權
 對象許可權介紹
指訪問其它方案對象的權利,用戶可以直接訪問自己方案的對象,但是如果要訪問別的方案的對象,則必須具有對象的許可權。
比如smith用戶要訪問scott.emp表(scott:方案,emp:表)
常用的有:
alter 修改 delete 刪除 select 查詢 insert 添加
update 修改 index 索引 references 引用 execute 執行
 顯示對象許可權
通過數據欄位視圖可以顯示用戶或是角色所具有的對象許可權。視圖為dba_tab_privs
SQL> conn system/manager;
SQL> select distinct privilege from dba_tab_privs;
SQL> select grantor, owner, table_name, privilege from dba_tab_privs where grantee = 'BLAKE';

1.授予對象許可權
在oracle9i前,授予對象許可權是由對象的所有者來完成的,如果用其它的用戶來操作,則需要用戶具有相應的(with grant option)許可權,從oracle9i開始,dba用戶(sys,system)可以將任何對象上的對象許可權授予其它用戶。授予對象許可權是用grant命令來完成的。
對象許可權可以授予用戶,角色,和public。在授予許可權時,如果帶有with grant option選項,則可以將該許可權轉授給其它用戶。但是要注意with grant option選項不能被授予角色。
1.monkey用戶要操作scott.emp表,則必須授予相應的對象許可權
1). 希望monkey可以查詢scott.emp表的數據,怎樣操作?
grant select on emp to monkey;
2). 希望monkey可以修改scott.emp的表數據,怎樣操作?
grant update on emp to monkey;
3). 希望monkey可以刪除scott.emp的表數據,怎樣操作?
grant delete on emp to monkey;
4). 有沒有更加簡單的方法,一次把所有許可權賦給monkey?
grant all on emp to monkey;

2.能否對monkey訪問許可權更加精細控制。(授予列許可權)
1). 希望monkey只可以修改scott.emp的表的sal欄位,怎樣操作?
grant update on emp(sal) to monkey
2).希望monkey只可以查詢scott.emp的表的ename,sal數據,怎樣操作?
grant select on emp(ename,sal) to monkey
...
3.授予alter許可權
如果black用戶要修改scott.emp表的結構,則必須授予alter對象許可權
SQL> conn scott/tiger
SQL> grant alter on emp to blake;
當然也可以用system,sys來完成這件事。
4.授予execute許可權
如果用戶想要執行其它方案的包/過程/函數,則須有execute許可權。
比如為了讓ken可以執行包dbms_transaction,可以授予execute許可權。
SQL> conn system/manager
SQL> grant execute on dbms_transaction to ken;
5.授予index許可權
如果想在別的方案的表上建立索引,則必須具有index對象許可權。
如果為了讓black可以在scott.emp表上建立索引,就給其index的對象許可權
SQL> conn scott/tiger
SQL> grant index on scott.emp to blake;
6.使用with grant option選項
該選項用於轉授對象許可權。但是該選項只能被授予用戶,而不能授予角色
SQL> conn scott/tiger;
SQL> grant select on emp to blake with grant option;
SQL> conn black/shunping
SQL> grant select on scott.emp to jones;

 回收對象許可權
在oracle9i中,收回對象的許可權可以由對象的所有者來完成,也可以用dba用戶(sys,system)來完成。
這里要說明的是:收回對象許可權後,用戶就不能執行相應的sql命令,但是要注意的是對象的許可權是否會被級聯收回?【級聯回收】
如:scott------------->blake-------------->jones
select on emp select on emp select on emp
SQL> conn scott/tiger@accp
SQL> revoke select on emp from blake
請大家思考,jones能否查詢scott.emp表數據。
答案:查不了了(和系統許可權不一樣,剛好相反)

角色:
角色就是相關許可權的命令集合,使用角色的主要目的就是為了簡化許可權的管理,假定有用戶a,b,c為了讓他們都擁有許可權
1. 連接資料庫
2. 在scott.emp表上select,insert,update。
如果採用直接授權操作,則需要進行12次授權。
因為要進行12次授權操作,所以比較麻煩喔!怎麼辦?

如果我們採用角色就可以簡化:
首先將creat session,select on scott.emp,insert on scott.emp, update on scott.emp授予角色,然後將該角色授予a,b,c用戶,這樣就可以三次授權搞定。
角色分為預定義和自定義角色兩類:
 預定義角色
預定義角色是指oracle所提供的角色,每種角色都用於執行一些特定的管理任務,下面我們介紹常用的預定義角色connect,resource,dba
1.connect角色
connect角色具有一般應用開發人員需要的大部分許可權,當建立了一個用戶後,多數情況下,只要給用戶授予connect和resource角色就夠了,那麼connect角色具有哪些系統許可權呢?
alter session
create cluster
create database link
create session
create table
create view
create sequence

2.resource角色
resource角色具有應用開發人員所需要的其它許可權,比如建立存儲過程,觸發器等。這里需要注意的是resource角色隱含了unlimited tablespace系統許可權。
resource角色包含以下系統許可權:
create cluster
create indextype
create table
create sequence
create type
create procere
create trigger
3.dba角色
dba角色具有所有的系統許可權,及with admin option選項,默認的dba用戶為sys和system,它們可以將任何系統許可權授予其他用戶。但是要注意的是dba角色不具備sysdba和sysoper的特權(啟動和關閉資料庫)。

 自定義角色
顧名思義就是自己定義的角色,根據自己的需要來定義。一般是dba來建立,如果用別的用戶來建立,則需要具有create role的系統許可權。在建立角色時可以指定驗證方式(不驗證,資料庫驗證等)。
1.建立角色(不驗證)
如果角色是公用的角色,可以採用不驗證的方式建立角色。
create role 角色名 not identified;
2.建立角色(資料庫驗證)
採用這樣的方式時,角色名、口令存放在資料庫中。當激活該角色時,必須提供口令。在建立這種角色時,需要為其提供口令。
create role 角色名 identified by 密碼;

角色授權
當建立角色時,角色沒有任何許可權,為了使得角色完成特定任務,必須為其授予相應的系統許可權和對象許可權。
1.給角色授權
給角色授予許可權和給用戶授權沒有太多區別,但是要注意,系統許可權的unlimited tablespace和對象許可權的with grant option選項是不能授予角色的。
SQL> conn system/manager;
SQL> grant create session to 角色名 with admin option
SQL> conn scott/tiger@myoral;
SQL> grant select on scott.emp to 角色名;
SQL> grant insert, update, delete on scott.emp to 角色名;
通過上面的步驟,就給角色授權了。
2.分配角色給某個用戶
一般分配角色是由dba來完成的,如果要以其它用戶身份分配角色,則要求用戶必須具有grant any role的系統許可權。
SQL> conn system/manager;
SQL> grant 角色名 to blake with admin option;
因為我給了with admin option選項,所以,blake可以把system分配給它的角色分配給別的用戶。

 刪除角色
使用drop role,一般是dba來執行,如果其它用戶則要求該用戶具有drop any role系統許可權。
SQL> conn system/manager;
SQL> drop role 角色名;
問題:如果角色被刪除,那麼被授予角色的用戶是否還具有之前角色里的許可權?
答案:不具有了

 顯示角色信息
1.顯示所有角色
SQL> select * from dba_roles;
2.顯示角色具有的系統許可權
SQL> select privilege, admin_option from role_sys_privs where role='角色名';
3.顯示角色具有的對象許可權
通過查詢數據字典視圖dba_tab_privs可以查看角色具有的對象許可權或是列的許可權。
4.顯示用戶具有的角色,及默認角色
當以用戶的身份連接到資料庫時,oracle會自動的激活默認的角色,通過查詢數據字典視圖dba_role_privs可以顯示某個用戶具有的所有角色及當前默認的角色
SQL> select granted_role, default_role from dba_role_privs where grantee = 『用戶名』;

 精細訪問控制
精細訪問控制是指用戶可以使用函數,策略實現更加細微的安全訪問控制。如果使用精細訪問控制,則當在客戶端發出sql語句(select,insert,update,delete)時,oracle會自動在sql語句後追加謂詞(where子句),並執行新的sql語句,通過這樣的控制,可以使得不同的資料庫用戶在訪問相同表時,返回不同的數據信息,如:
用戶 scott blake jones
策略 emp_access
資料庫表 emp
如上圖所示,通過策略emp_access,用戶scott,black,jones在執行相同的sql語句時,可以返回不同的結果。例如:當執行select ename from emp; 時,根據實際情況可以返回不同的結果。

實際上角色有點像JAVA中的代碼重構.預定義角色和自定義角色就像是吃飯時的套餐和自助餐.

㈦ oracle 資料庫的 預定義角色 有哪些

下面介紹幾種常用的、主要的預定義角色及其相關的許可權:
1. CONNECT
2. RESOURCE
3. DBA
4. EXP_FULL_DATABASE
5. IMP_FULL_DATABASE
6. DELETE_CATALOG_ROLE
7. EXECUTE_CATALOG_ROLE
8. SELECT_CATALOG_ROLE
說明:
1-3:是為了同Oracle老版本中的概念相兼容而提供的,不能只依賴於這些ROLE;4-5:是為了使用Import和Export實用程序的方便而提供的;6-8:是為了數據字典視圖和包的卸載而提供的。
1-3前面已經提到過,下面補充學習:4-8
6.DELETE_CATALOG_ROLE角色,具有從數據字典中刪除數據的權利;7. EXECUTE_CATALOG_ROLE角色,具有從數據字典中執行部分過程和函數的權利。
8. SELECT_CATALOG_ROLE角色,具有從數據字典查詢的權利。

㈧ 有關oracle資料庫角色授權的問題

可能是你沒有給角色授權,只是把一個未經授權的角色給了user1用戶。連最基本的連接到資料庫的許可權都沒有(CREATE SESSION)

你可以自定義自己的角色,也可以使用Oracle預定義餓角色。Oracle預定義角色簡單介紹如下:
CONNECT 角色包含下面許可權:CREATE SESSION,CREATE TABLE,CREATE VIEW,CREATE SYNONYM……
RESOURCE 角色包含下面許可權:CREATE TABLE,REATEPROCEDURE,CREATE SEQUENCE,CREATE TRIGGER……
DBA:包含大部分系統管理許可權
SELECT_CATALOG_ROLE:查詢數據字典許可權
EXP_FULL_DATABASE:導出資料庫許可權
……
……

㈨ 如何查詢oracle資料庫中的各種角色

用數據字典select*fromdba_users;查看資料庫裡面所有用戶,前提是你是有dba許可權的帳號,如sys,systemselect*fromall_users;查看你能管理的所有用戶!select*fromuser_users;查看當前用戶信息!