日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle 用户,角色,权限等

發(fā)布時間:2023/12/10 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle 用户,角色,权限等 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

權(quán)限管理是 Oracle 系統(tǒng)的精華,不同用戶登錄到同一數(shù)據(jù)庫中,可能看到不同數(shù)量的表,擁有不同的權(quán)限。Oracle 的權(quán)限分為系統(tǒng)權(quán)限和數(shù)據(jù)對象權(quán)限,共一百多種,如果單獨(dú)對用戶授權(quán),很囧,有一些用戶需要的權(quán)限是相同的,就把這些用戶歸為同一類——某種角色,通過設(shè)立一些有預(yù)定權(quán)限的角色簡化和明確授權(quán)操作,角色出現(xiàn)的動機(jī)也就是為了簡化權(quán)限管理,它是權(quán)限的集合。一般做法是:系統(tǒng)把權(quán)限賦給角色,然后把角色賦給用戶,當(dāng)然也可以直接把某權(quán)限賦給用戶。Oracle 提供細(xì)粒度的權(quán)限,可以對表的某一列單獨(dú)設(shè)置權(quán)限,可以對某用戶查詢某表自動增添 where 限制條件。

權(quán)限允許用戶訪問屬于其它用戶的對象或執(zhí)行程序,ORACLE系統(tǒng)提供三種權(quán)限:Object 對象級、System 系統(tǒng)級、Role 角色級。這些權(quán)限可以授予給用戶、特殊用戶public或角色,如果授予一個權(quán)限給特殊用戶"Public"(用戶public是oracle預(yù)定義的,每個用戶享有這個用戶享有的權(quán)限),那么就意味作將該權(quán)限授予了該數(shù)據(jù)庫的所有用戶。對管理權(quán)限而言,角色是一個工具,權(quán)限能夠被授予給一個角色,角色也能被授予給另一個角色或用戶。用戶可以通過角色繼承權(quán)限,除了管理權(quán)限外角色服務(wù)沒有其它目的。權(quán)限可以被授予,也可以用同樣的方式撤銷。

Oracle 的角色存放在表 dba_roles 中,某角色包含的系統(tǒng)權(quán)限存放在? dba_sys_privs 中

,包含的對象權(quán)限存放在 dba_tab_privs 中。
下面是“角色”、“用戶”和“權(quán)限”的互查:

1. 用戶

例:

@>conn system/888888 Connected. SYSTEM@userdata>create user user50 identified by user50;User created.SYSTEM@userdata>grant connect,resource to user50;Grant succeeded.

查看當(dāng)前登錄用戶擁有的所有角色和系統(tǒng)權(quán)限

USER50@userdata>select * from session_privs;PRIVILEGE ------------------------------------------------------------------------------------------------------------------------ CREATE SESSION UNLIMITED TABLESPACE CREATE TABLE CREATE CLUSTER CREATE SEQUENCE CREATE PROCEDURE CREATE TRIGGER CREATE TYPE CREATE OPERATOR CREATE INDEXTYPE10 rows selected.USER50@userdata>select * from role_sys_privs;ROLE PRIVILEGE ADMIN_OPT ---------------- ------------------------ --------- RESOURCE CREATE SEQUENCE NO RESOURCE CREATE TRIGGER NO RESOURCE CREATE CLUSTER NO RESOURCE CREATE PROCEDURE NO RESOURCE CREATE TYPE NO CONNECT CREATE SESSION NO RESOURCE CREATE OPERATOR NO RESOURCE CREATE TABLE NO RESOURCE CREATE INDEXTYPE NO9 rows selected.

查看某一用戶所擁有的角色和系統(tǒng)權(quán)限

SYSTEM@userdata>select * from dba_role_privs where GRANTEE='USER50';GRANTEE       GRANTED_ROLE ADMIN_OPT DEFAULT_R ------------------------------ -------------------- --------- --------- USER50       RESOURCE   NO YES USER50       CONNECT NO YES SYSTEM@userdata>select * from dba_sys_privs where GRANTEE='USER50';GRANTEE PRIVILEGE ADMIN_OPT ------------------------------ ------------------------------ --------- USER50 UNLIMITED TABLESPACE NO

查看某一用戶擁有的對象權(quán)限

SYSTEM@userdata>grant select on scott.emp to user50;SYSTEM@userdata>select * from dba_tab_privs where GRANTEE='USER50';GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE HIERARCHY -------------------- --------------- --------------- --------------- --------------- --------- --------- USER50 SCOTT EMP SCOTT SELECT NO NO

2. 權(quán)限

  • 系統(tǒng)權(quán)限:系統(tǒng)規(guī)定用戶使用數(shù)據(jù)庫的權(quán)限。(系統(tǒng)權(quán)限是對用戶而言)。
  • 對象權(quán)限:某種權(quán)限用戶對其它用戶的表或視圖的存取權(quán)限。(是針對表或視圖而言的)。

2.1. 系統(tǒng)權(quán)限管理

2.1.1 系統(tǒng)權(quán)限分類

  • DBA: 擁有全部特權(quán),是系統(tǒng)最高權(quán)限,只有DBA才可以創(chuàng)建數(shù)據(jù)庫結(jié)構(gòu)。
  • RESOURCE:擁有Resource權(quán)限的用戶只可以創(chuàng)建實(shí)體,不可以創(chuàng)建數(shù)據(jù)庫結(jié)構(gòu)。
  • CONNECT:擁有Connect權(quán)限的用戶只可以登錄Oracle,不可以創(chuàng)建實(shí)體,不可以創(chuàng)建數(shù)據(jù)庫結(jié)構(gòu)。

對于普通用戶:授予connect, resource權(quán)限。
對于DBA管理用戶:授予connect,resource, dba權(quán)限。

2.1.2 系統(tǒng)權(quán)限授權(quán)命令

[系統(tǒng)權(quán)限只能由DBA用戶授出:sys, system]
授權(quán)命令:SQL> grant connect, resource, dba to 用戶名1 [,用戶名2]...;

[普通用戶通過授權(quán)可以具有與system相同的用戶權(quán)限,但永遠(yuǎn)不能達(dá)到與sys用戶相同的權(quán)限,system用戶的權(quán)限也可以被回收。]

?2.1.3.權(quán)限相關(guān)的視圖

與權(quán)限,角色相關(guān)的視圖大概有下面這些:

?????? DBA_SYS_PRIVS: 查詢某個用戶所擁有的系統(tǒng)權(quán)限

????? USER_SYS_PRIVS:?? 當(dāng)前用戶所擁有的系統(tǒng)權(quán)限

????? SESSION_PRIVS:???? 當(dāng)前用戶所擁有的全部權(quán)限

????? ROLE_SYS_PRIVS:???? 某個角色所擁有的系統(tǒng)權(quán)限

?????? 注意: 要以SYS用戶登陸查詢這個視圖,否則返回空.

????? ROLE_ROLE_PRIVS:??? 當(dāng)前角色被賦予的角色

????? SESSION_ROLES:????? 當(dāng)前用戶被激活的角色

????? USER_ROLE_PRIVS:?? 當(dāng)前用戶被授予的角色

????? 另外還有針對表的訪問權(quán)限的視圖:

?????? TABLE_PRIVILEGES

??????? ALL_TAB_PRIVS ??

?????? ROLE_TAB_PRIVS:???? 某個角色被賦予的相關(guān)表的權(quán)限

3. 角色

3.1 何為角色
  角色。角色是一組權(quán)限的集合,將角色賦給一個用戶,這個用戶就擁有了這個角色中的所有權(quán)限。

3.2 系統(tǒng)預(yù)定義角色
  預(yù)定義角色是在數(shù)據(jù)庫安裝后,系統(tǒng)自動創(chuàng)建的一些常用的角色。下介簡單的介紹一下這些預(yù)定角色。角色所包含的權(quán)限可以用以下語句查詢:
sql>select * from role_sys_privs where role='角色名';

1.CONNECT, RESOURCE, DBA
這些預(yù)定義角色主要是為了向后兼容。其主要是用于數(shù)據(jù)庫管理。oracle建議用戶自己設(shè)計數(shù)據(jù)庫管理和安全的權(quán)限規(guī)劃,而不要簡單的使用這些預(yù)定角色。將來的版本中這些角色可能不會作為預(yù)定義角色。

?

2.DELETE_CATALOG_ROLE,?EXECUTE_CATALOG_ROLE,?SELECT_CATALOG_ROLE
這些角色主要用于訪問數(shù)據(jù)字典視圖和包。

?

3.EXP_FULL_DATABASE,?IMP_FULL_DATABASE
這兩個角色用于數(shù)據(jù)導(dǎo)入導(dǎo)出工具的使用。

?

4.AQ_USER_ROLE,?AQ_ADMINISTRATOR_ROLE
AQ:Advanced Query。這兩個角色用于oracle高級查詢功能。

?

5.?SNMPAGENT
用于oracle enterprise manager和Intelligent Agent

?

6.RECOVERY_CATALOG_OWNER
用于創(chuàng)建擁有恢復(fù)庫的用戶。關(guān)于恢復(fù)庫的信息,參考o(jì)racle文檔《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.

?

3.3 管理角色


1.建一個角色
sql>create role role1;


2.授權(quán)給角色
sql>grant create any table,create procedure to role1;


3.授予角色給用戶
sql>grant role1 to user1;


4.查看角色所包含的權(quán)限
sql>select * from role_sys_privs;


5.創(chuàng)建帶有口令的角色(在生效帶有口令的角色時必須提供口令)
sql>create role role1 identified by password1;


6.修改角色:是否需要口令
sql>alter role role1 not identified;
sql>alter role role1 identified by password1;


7.設(shè)置當(dāng)前用戶要生效的角色
(注:角色的生效是一個什么概念呢?假設(shè)用戶a有b1,b2,b3三個角色,那么如果b1未生效,則b1所包含的權(quán)限對于a來講是不擁有的,只有角色生效了,角色內(nèi)的權(quán)限才作用于用戶,最大可生效角色數(shù)由參數(shù)MAX_ENABLED_ROLES設(shè)定;在用戶登錄后,oracle將所有直接賦給用戶的權(quán)限和用戶默認(rèn)角色中的權(quán)限賦給用戶。)
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;//設(shè)置所有角色失效
sql>set role all except role1;//除role1外的該用戶的所有其它角色生效。
sql>select * from SESSION_ROLES;//查看當(dāng)前用戶的生效的角色。


8.修改指定用戶,設(shè)置其默認(rèn)角色
sql>alter user user1 default role role1;
sql>alter user user1 default role all except role1;
詳見oracle參考文檔


9.刪除角色
sql>drop role role1;
角色刪除后,原來擁用該角色的用戶就不再擁有該角色了,相應(yīng)的權(quán)限也就沒有了。

===================來自一澤漣漪的博客,轉(zhuǎn)載請標(biāo)明出處 www.cnblogs.com/ilifeilong===================

轉(zhuǎn)載于:https://www.cnblogs.com/CandiceW/p/10029499.html

總結(jié)

以上是生活随笔為你收集整理的Oracle 用户,角色,权限等的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。