Oracle角色配置文件.docx

上传人:b****6 文档编号:5635329 上传时间:2022-12-29 格式:DOCX 页数:22 大小:23.61KB
下载 相关 举报
Oracle角色配置文件.docx_第1页
第1页 / 共22页
Oracle角色配置文件.docx_第2页
第2页 / 共22页
Oracle角色配置文件.docx_第3页
第3页 / 共22页
Oracle角色配置文件.docx_第4页
第4页 / 共22页
Oracle角色配置文件.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

Oracle角色配置文件.docx

《Oracle角色配置文件.docx》由会员分享,可在线阅读,更多相关《Oracle角色配置文件.docx(22页珍藏版)》请在冰豆网上搜索。

Oracle角色配置文件.docx

Oracle角色配置文件

Oracle角色、配置文件

--================================

--Oracle角色、配置文件

--================================

 

一、角色

1.角色

权限的集合,可以分配给一个用户或其他角色,但角色不能授予自己,也不能循环授予

角色的优点

可以先创建角色,向该角色赋予一系列权限,然后再将该角色授予多个用户或角色

增加或删除角色中的某一权限,被授予该角色的所有用户或角色自动地获得新增权限或删除旧的权限

可以为角色设置密码

2.创建修改角色

CREATEROLErole_name

[NOTIDENTIFIED(默认)|IDENTIFIEDBYpassword|EXTERNALLY|GLOBALLY];

 

注:

同一个数据库中角色名称必须唯一,且不能使用已存在的用户名称

不支持withgrantoption为角色授予对象权限

支持withadminoption为角色授予系统权限或另一个角色

使用EnterpriseManager创建某个用户时,该用户被自动授予了CONNECT角色,

即同时具有了该角色的所有权限

IDENTIFIEDBYEXTERNALLY

意味着了启用一个角色,用户必须是某个操作系统组的一个成员,该操作系统组的名称应当与角色相对应。

当希望通过操作系统对角色进行身份认证,则需要设置OS_ROLE参数为TRUE

且当设定了使用IDENTIFIEDBYEXTERNALLY身份验证,必须在数据库驻留的服务器上按以下格式创建组

ora__[_[d][a]]

d:

指示部分指定的角色为用于用户的默认角色

a:

指示可以使用withadminoption为用户授予部分所指定的角色

关于外部身份验证,请参考:

Oracle密码文件

常用的角色

角色被授予的权限

DBA几乎所有系统权限

SELECT_CATALOG_ROLE数据字典上的对象权限,未被授予任何系统权限

EXECUTE_CATALOG_ROLE数据字典上的程序包、过程、函数的对象权限

DELETE_CATALOG_ROLEDELETEONSYS.AUD$

DELETEONSYS.FGA_LOG$

EXP_FULL_DATABASE从数据库中导出数据时查询任何表或序列、执行任何过程或类型以及修改

数据字典对象的权限

IMP_FULL_DATABASE执行导入时,在数据库内除了sys模式之外的任何模式中创建对象的权限

CONNECTALTERSESSION

CREATECLUSTER

CREATEDATABASELINK

CREATESEQUENCE

CREATESESSION

CREATESYNONYM

CREATETABLE

CREATEVIEW

RESOURCECREATECLUSTER

CREATEINDEXTYPE

CREATEOPERATOR

CREATEPROCEDURE

CREATESEQUENCE

CREATETABLE

CREATETRIGGER

CREATETYPE

UNLIMITEDTABLESPACE(whengranted)

AQ_ADMINISTRATOR_ROLEAdvancedQueuing对象上的对象权限

CREATEEVALUATIONCONTEXT

CREATERULE

CREATERULESET

DEQUEUEANYQUEUE

ENQUEUEANYQUEUE

MANAGEANYQUEUE

AQ_USER_ROLEEXECUTEONSYS.DBMS_AQ

EXECUTEONSYS.DBMS_AQIN

EXECUTEONSYS.DBMS_AQJMS_INTERNAL

EXECUTEONSYS.DBMS_TRANSFORM

SCHEDULER_ADMINCREATEANYJOB

CREATEJOB

EXECUTEANYCLASS

EXECUTEANYPROGRAM

MANAGESCHEDULE

(使用WITHADMINOPTION授予上述所有权限)

PUBLIC不具有特殊的权限,不过为public角色授予权限时,所有用户都会继承该权限

--创建不要口令的角色clerk

SQL>CREATEROLEclerk;

 

--创建要口令的角色sales

SQL>CREATEROLEsalesIDENTIFIEDBYmoney;

 

--创建一个需要使用外部标识(如操作系统)的角色manager

SQL>CREATEROLEmanagerIDENTIFIEDEXTERNALLY;

 

--创建后查看角色:

 

SQL>SELECTrole,password_requiredFROMdba_roles;

 

ROLEPASSWORD

--------------------------------------

CLERKNO

SALESYES

MANAGEREXTERNAL

 

角色修改:

ALTERROLErolename

[NOTIDENTIFIED|IDENTIFIED

BYpassword|EXTERNALLY|GLOBALLY];

一个角色在创建后可以修改,但只能修改它的验证方法。

但只有角色是使用带有withADMINoption选项的GRANT语句授予的或者具

有ALTERANYROLE系统权限的用户时,才可以修改这个角色

 

--将角色clerk的验证方法改为使用外部(如操作系统)标识

SQL>ALTERROLEclerkIDENTIFIEDEXTERNALLY;

 

--将角色sales的验证方法改为不使用任何标识方法

SQL>ALTERROLEsalesNOTIDENTIFIED;

 

--将角色manager的验证方法改为使用口令标识,口令为vampire

SQL>ALTERROLEmanagerIDENTIFIEDBYvampires;

 

--再查询后即可看到变化

SELECTrole,password_requiredFROMdba_roles

 

3.为角色授予和取消权限

a.角色授权

为角色授予系统权限语法

GRANTsystem_priv[,system_priv,...]

TOrole|PUBLIC[,role|PUBLIC,...]

[WITHADMINOPTION];

为角色授予对象权限语法

GRANTALL[PRIVILEGES]|object_priv[(column,column,...)]

[,object_priv[(column,column,...(],...]

ON[schema_name.]object_name

TOrole|PUBLIC[,role|PUBLIC,...];

--为角色赋予权限(GRANT):

SQL>showuser;

USERis"SYSTEM"

SQL>CREATEROLEmanager;

 

Rolecreated.

--赋予系统权限

SQL>GRANTCREATETABLE,CREATEVIEW,CREATESESSIONTOmanagerWITHADMINOPTION;

 

Grantsucceeded.

--赋予对象权限

SQL>GRANTSELECT,INSERT,UPDATEONscott.empTOmanager;

 

Grantsucceeded.

 

--查看角色的系统权限(role_sys_privs)

SQL>SELECT*FROMrole_sys_privsWHERErole='MANAGER';

ROLEPRIVILEGEADM

-----------------------------------------------------

MANAGERCREATESESSIONYES

MANAGERCREATETABLEYES

MANAGERCREATEVIEWYES

--查看角色的对象权限(role_tab_privs)

SQL>SELECT*FROMrole_tab_privsWHERErole='MANAGER';

 

ROLEOWNERTABLE_NAMECOLUMN_NAMEPRIVILEGEGRA

---------------------------------------------------------------------------------------------------

MANAGERSCOTTEMPUPDATENO

MANAGERSCOTTEMPINSERTNO

MANAGERSCOTTEMP

 

b.取消角色所拥有的权限

取消角色拥有的系统权限语法

REVOKEsystem_priv|role_name[,system_priv|role_name,...]

FROMrole|PUBLIC[,role|PUBLIC,...];

取消角色用户的对象权限语法

REVOKEALL[PRIVILEGES]|object_priv[,object_priv,...]

ON[schema_name.]object_name

FROMrole|PUBLIC[,role|PUBLIC,...]

[CASCADECONSTRAINTS]

--取消角色的系统权限

SQL>REVOKECREATEVIEWFROMmanager;

 

Revokedsucceeded.

--取消角色的对象权限

SQL>REVOKEINSERT,UPDATEONscott.empFROMmanager;

 

Revokedsucceeded.

--查看被取消权限后所剩余的权限的集合

SQL>SELECTrole,'System_privs'owner,privilege

2FROMrole_sys_privs

3WHERErole='MANAGER'

4UNION

5SELECTrole,owner,privilege

6FROMrole_tab_privs

7WHERErole='MANAGER';

 

ROLEOWNERPRIVILEGE

----------------------------------------------------------------------

MANAGERSCOTTSELECT

MANAGERSystem_privsCREATESESSION

MANAGERSystem_privsCREATETABLE

4.角色赋予与角色取消

a.将角色赋予用户(grant):

语法:

GRANTrole_name[,role_name,...]

TOuser_name|role|PUBLIC[,user_name|role|PUBLIC,...]

[WITHADMINOPTION];

--将角色赋予robinson且使用了WITHADMINOPTION

SQL>GRANTmanagerTOrobinsonWITHADMINOPTION;

 

Grantsucceeded.

--robinson有权将角色授予john,如下

SQL>CONNrobinson/lion;

Connected.

SQL>GRANTmanagerTOjohn;

 

Grantsucceeded.

 

--查看角色授予了哪些用户(dba_role_privs)

SQL>SELECT*FROMdba_role_privsWHEREgranted_role='MANAGER';

 

GRANTEEGRANTED_ROLEADMDEF

--------------------------------------------------------

SYSTEMMANAGERYESYES

JOHNMANAGERNOYES

ROBINSONMANAGERYESYES

--查看用户拥有哪些角色

SQL>CONNscott/tiger;

Connected.

SQL>SELECT*FROMuser_role_privs;

 

USERNAMEGRANTED_ROLEADMDEFOS_

---------------------------------------------------------------------

SCOTTCONNECTNOYESNO

SCOTTRESOURCENOYESNO

--查看用户拥有哪些角色(使用session_roles)

SQL>SELECT*FROMsession_roles;

 

ROLE

------------------------------

CONNECT

RESOURCE

b.取消用户拥有的角色

语法:

REVOKErole_name[,role_name,...]

FROMuser_name|role|PUBLIC[,user_name|role|PUBLIC,...];

--取消用户角色

SQL>REVOKEresourceFROMscott;

 

Revokesucceeded.

--查看resource角色已被取消

SQL>CONNscott/tiger;

Connected.

SQL>SELECT*FROMuser_role_privs;

 

USERNAMEGRANTED_ROLEADMDEFOS_

---------------------------------------------------------------------

SCOTTCONNECTNOYESNO

--对于使用WITHADMINOPTION参数,收回robinson角色,并不影响john的级联角色,如下:

SQL>select*fromdba_role_privswheregrantee='JOHN';

 

GRANTEEGRANTED_ROLEADMDEF

--------------------------------------------------------

JOHNMANAGERNOYES

 

SQL>revokemanagerfromrobinson;

 

Revokesucceeded.

 

SQL>select*fromdba_role_privswheregrantee='JOHN';

 

GRANTEEGRANTED_ROLEADMDEF

--------------------------------------------------------

JOHNMANAGERNOYES

 

SQL>select*fromdba_role_privswheregrantee='ROBINSON';

 

norowsselected

5.设置默认角色

可以将多个角色授予一个用户。

默认角色是这些角色的一个子集,默认角色在用户登录系统时

自动激活(开启)。

在默认情况下,所有赋予用户的角色在用户登录时不需要口令就被激活。

可以使用ALTERUSER语句来限制用户有的默认角色。

 

语法:

ALTERUSERusernameDEFAULTROLE

role[,role,...]|ALL[EXCEPTrole[,role,...]]|NONE;

ALTERUSER语句中的DEFAULTROLE子句只适用于那些使用GRANT语句直接授予用户的角色。

DEFAULTROLE子句在下列情况下是不能使用的:

通过其它角色授予的角色

没有直接授予该用户的角色

通过外部服务(如操作系统)管理的角色

 

--创建用户martin并授予resource,connect角色

SQL>CREATEUSERmartinIDENTIFIEDBYabc;

 

Usercreated.

 

SQL>GRANTRESOURCE,CONNECTTOmartin;

 

Grantsucceeded.

 

SQL>CONNmartin/abc;

Connected.

SQL>CONNsystem/redhat

Connected.

--设置缺省的角色为NONE后,无法登陆

SQL>ALTERUSERmartinDEFAULTROLENONE;

 

Useraltered.

 

SQL>CONNmartin/abc;

ERROR:

ORA-01045:

userMARTINlacksCREATESESSIONprivilege;logondenied

 

 

Warning:

YouarenolongerconnectedtoORACLE.

SQL>CONNsystem/redhat;

Connected.

--重置角色后可以正常登陆

SQL>ALTERUSERmartinDEFAULTROLEALL;

 

Useraltered.

 

SQL>CONNmartin/abc;

Connected.

--默认角色为除resource之外的所有角色

SQL>ALTERUSERmartinDEFAULTROLEALLEXCEPTRESOURCE;

 

Useraltered.

 

 

6.激活和禁止角色(SETROLE)

语法:

SETROLEALL[EXCEPTrole_name[,role_name]]|NONE|

role_name[IDENTIFIEDBYpassword][,role_name[IDENTIFIEDBYpassword,...];

SQL>CONNrobinson/lion

Connected.

--查看用户拥有的所有角色

SQL>SELECT*FROMuser_role_privs;

 

USERNAMEGRANTED_ROLEADMDEFOS_

---------------------------------------------------------------------

ROBINSONMANAGERNOYESNO

ROBINSONRESOURCENOYESNO

 

--查看用户拥有的所有权限

SQL>SELECT*FROMsession_privs;

 

PRIVILEGE

----------------------------------------

CREATESESSION

CREATETABLE

CREATECLUSTER

CREATESEQUENCE

CREATEPROCEDURE

CRE

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1