Oracle系统中用户权限的赋予.docx

上传人:b****1 文档编号:22779603 上传时间:2023-04-27 格式:DOCX 页数:15 大小:22.06KB
下载 相关 举报
Oracle系统中用户权限的赋予.docx_第1页
第1页 / 共15页
Oracle系统中用户权限的赋予.docx_第2页
第2页 / 共15页
Oracle系统中用户权限的赋予.docx_第3页
第3页 / 共15页
Oracle系统中用户权限的赋予.docx_第4页
第4页 / 共15页
Oracle系统中用户权限的赋予.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

Oracle系统中用户权限的赋予.docx

《Oracle系统中用户权限的赋予.docx》由会员分享,可在线阅读,更多相关《Oracle系统中用户权限的赋予.docx(15页珍藏版)》请在冰豆网上搜索。

Oracle系统中用户权限的赋予.docx

Oracle系统中用户权限的赋予

Oracle系统中用户权限的赋予,查看和管理.

在Oracle数据库中,用户的权限分为两种(在这里我们不讨论dba或oper的权限,只考虑普通用户的权限),分别是SystemPrivilege系统权限和UserTablePrivilege用户数据表权限.

1.首先,创建用户,以下几条命令可以创建一个用户,前提是必须以DBA的身份登录(如果你不是DBA,不要看下去了):

createuserDB_USERidentifiedbyDB_USER_PW'创建用户DB_USER,密码为DB_USER_PW

grantcreatesessiontoDB_USER'给用户创建会话的权限

grantresourcetoDB_USER

2.当用户建立后,会自动在Oracle数据库系统中生成属于该用户的Scheme(可以理解为所有属于该用户的表,视图....等对象的集合).

该用户可以将对这些对象的访问权限赋予其它的系统用户.

3.该用户用sqlplus登录后,以下命令可以看到该用户的权限(该部分取自于CNOUG网站):

本用户读取其他用户对象的权限:

select*fromuser_tab_privs;

本用户所拥有的系统权限:

select*fromuser_sys_privs;

ORACLE数据库用户与权限管理

ORACLE是多用户系统,它允许许多用户共享系统资源。

为了保证数据库系统的安全,数据库管理系统配置了良好的安全机制。

2.1ORACLE数据库安全策略

建立系统级的安全保证

系统级特权是通过授予用户系统级的权利来实现,系统级的权利(系统特权)包括:

建立表空间、建立用户、修改用户的权利、删除用户等。

系统特权可授予用户,也可以随时回收。

ORACLE系统特权有80多种。

建立对象级的安全保证

对象级特权通过授予用户对数据库中特定的表、视图、序列等进行操作(查询、增、删改)的权利来实现。

建立用户级的安全保证

用户级安全保障通过用户口令和角色机制(一组权利)来实现。

引入角色机制的目的是简化对用户的授权与管理。

做法是把用户按照其功能分组,为每个用户建立角色,然后把角色分配给用户,具有同样角色的用户有相同的特权。

2.2用户管理

ORACLE用户管理的内容主要包括用户的建立、修改和删除

用户的建立

SQL>CREATEUSERjxzy

>IDENTIFIEDBYjxzy_password

>DEFAULTTABLESPACEsystem

>QUATA5MONsystem;//供用户使用的最大空间限额

用户的修改

SQL>CREATEUSERjxzy

>IDENTIFIEDBYjxzy_pw

>QUATA10MONsystem;

删除用户及其所建对象

SQL>DROPUSERjxzyCASCADE;//同时删除其建立的实体

2.3系统特权管理与控制

ORACLE提供了80多种系统特权,其中每一个系统特权允许用户执行一个或一类数据库操作。

授予系统特权

SQL>GRANTCREATEUSER,ALTERUSER,DROPUSER

>TOjxzy_new

>WITHADMINOPTION;

回收系统特权

SQL>REVOKECREATEUSER,ALTERUSER,DROPUSER

>FROMjxzy_new

//但没有级联回收功能

显示已被授予的系统特权(某用户的系统级特权)

SQL>SELECT*FROMsys.dba_sys_privs

2.4对象特权管理与控制

ORACLE对象特权指用户在指定的表上进行特殊操作的权利。

这些特殊操作包括增、删、改、查看、执行(存储过程)、引用(其它表字段作为外键)、索引等。

授予对象特权

SQL>GRANTSELECT,INSERT(office_num,office_name),

>UPDATE(desc)ONoffice_organization

>TOnew_adminidtrator

>WITHGRANTOPTION;

//级联授权

SQL>GRANTALLONoffice_organization

>TOnew_administrator

回收对象特权

SQL>REVOKEUPDATEONoffice_orgaization

>FROMnew_administrator

//有级联回收功能

SQL>REVOKEALLONoffice_organization

>FROMnew_administrator

显示已被授予的全部对象特权

SQL>SELECT*FROMsys.dba_tab_privs

2.5角色的管理

ORACLE的角色是命名的相关特权组(包括系统特权与对象特权),ORACLE用它来简化特权管理,可把它授予用户或其它角色。

ORACLE数据库系统预先定义了CONNECT、RESOURCE、DBA、EXP_FULL_DATABASE、IMP_FULL_DATABASE五个角色。

CONNECT具有创建表、视图、序列等特权;RESOURCE具有创建过程、触发器、表、序列等特权、DBA具有全部系统特权;EXP_FULL_DATABASE、IMP_FULL_DATABASE具有卸出与装入数据库的特权。

通过查询sys.dba_sys_privs可以了解每种角色拥有的权利。

授予用户角色

SQL>GRANTDBATOnew_administractor

>WITHGRANTOPTION;

==============================================================

Oracle的用户根据所被授予的权限分为系统权限和对象权限。

其中最高的权限是sysdba。

Sysdba具有控制Oracle一切行为的特权,诸如创建、启动、关闭、恢复数据库,使数据库归档/非归档,备份表空间等关键性的动作只能通过具有sysdba权限的用户来执行。

这些任务即使是普通DBA角色也不行。

Sysoper是一个与sysdba相似的权限,只不过比sysdba少了SYSOPERprivilegesWITHADMINOPTION,CREATEDATABASE,RECOVERDATABASEUNTIL这几个权限而已。

这两者的认证方式是相同的办法,所以下面只介绍sysdba的认证管理。

一般对sysdba的管理有两种方式:

***作系统认证和密码文件认证。

具体选择那一种认证方式取决于:

你是想在Oracle运行的机器上维护数据库,还是在一台机器上管理分布于不同机器上的所有的Oracle数据库。

若选择在本机维护数据库,则选择***作系统认证可能是一个简单易行的办法;若有好多数据库,想进行集中管理,则可以选择password文件认证方式。

下图比较直观的说明了这个选择权衡过程:

使用***作系统认证方式的配置过程:

1.在***作系统中建立一个合法帐户。

具体来说,在NT上,首先建立一个本地用户组,取名为ORA__DBA,其中SID为该数据库实例的SID,或者建立一个ORA_DBA地组,该组不对应于任何一个单独的Oracle实例。

这样当一个NT上有好几个Oracle实例时,不用分别管理。

然后再NT上建立一个用户,并且把它归入该组中。

但是实际上这两步在Oracle8I安装过程中已经自动完成了,一般不用手动进行。

第三步:

在sqlnet.ora(位于$ORACLE_HOME/NETWORK/ADMIN目录中)中,把SQLNET.AUTHENTICATION_ SERVICES设置为SQLNET.AUTHENTICATION_SERVICES=(NTS),意思为使用NT认证方式。

第四步,在INIT.ORA中,把REMOTE_LOGIN_PASSWORD设置为NONE,意思是不用password认证方式。

完成以上步骤后,就可以在登录到NT后,直接在SQL*Plus和SERVERMANAGER中CONNECTINTERNAL(CONNECT/ASSYSDBA)来作为超级用户登录到Oracle中,执行一些只有超级用户才能进行的***作。

在Unix下,情况有些不同。

毕竟这是两个完全不同的***作系统。

首先,在安装Oracle之前,建立一个DBA组,这一步不用说了,不然是装不上Oracle的。

一般还建立一个名为Oracle的用户,并把它加入到DBA组中。

第二步,设置REMOTE_LOGIN_PASSWORD为NONE。

在Oracle8.1以后,该参数默认为EXCLUSIVE。

一定要记得改过来。

第三步,用该用户名登录Unix,运行SQL*Plus或者SERVERMANAGER,输入以下命令:

CONNECTINTERNAL (CONNECT/ASSYSDBA)来登录到Oracle中。

使用password文件认证的具体步骤:

Oracle提供orapwd实用程序来创建password文件,运用orapwd建立该认证方式的具体步骤如下:

1.使用Orapwd实用程序来创建一个PASSWORD文件。

语法:

orapwdfile=文件名password=internal用户密码entried=entries.

详细解释:

文件名要包含完整的全路径名,如果不指定,Oracle把它默认放置$ORACLE_HOME/dbs(Unix下)或者$ORACLE_HOME/DATABASE(NT下)下。

用户密码是用户internal的密码。

当然后来还可以再向里边加入别的超级用户。

Entries表示最大允许有的超级用户数目。

这个是一个可选的。

前两者是必须指定的。

一般会把它设置的比实际需要大一些,以免不够。

2.把INIT.ORA中REMOTE_LOGIN_PASSWORD设置为EXCLUSIVE或SHARED.使用EXCLUSIVE表示只有当前INSTANCE使用这个password文件。

而且允许有别的用户作为sysdba登录进系统里边,而若选择了SHARED,则表明不止一个实例使用这个密码文件,伴随着一个很强的约束:

sysdba权限只能授予sys和internal这两个用户名。

(其实internal不是一个实际用户,而只是sys作为sysdba登录时的一个别名。

同时还要记得把sqlnet.ora文件中SQLNET.AUTHENTICATION_SERVICES设置为NONE。

一般在Unix下它是默认设置。

在NT下,若选择典型安装时,会使用OS认证,而自定义时会使用密码文件认证方式。

在安装过程中会提示输入INTERNAL密码。

这样的话,就不用在手工创建密码文件和设定INTERNAL的密码了。

3.用SQL*Plus或SERVERMANAGER运行下面命令登录进系统:

CONNECTINTERNAL/密码。

注意点:

1.在Oracle8.1.6安装在WIN2000下创建数据库时,常常会发生凭证检索失败的错误。

这是由于Oracle不能应用OS认证的结果。

一般可以通过修改sqlnet.ora中SQLNET.AUTHENTICATION_SERVICES为NONE来解决。

这时,Oracle将采用密码文件认证方式。

2.由于Oracle有几个系统预建的用户,所以最好在安装完成以后马上改变这些用户的密码。

系统默认得密码分别为:

internal/oracle,sys/change_on_install,system/manager.

3.当选择密码文件认证方式时,可以再向系统中加入其他超级用户。

比如用以下语句把用户SCOTT加入超级用户之中:

(由具有sysdba权限的人执行)

SQL>GRANTSYSDBATOSCOTT;这样SCOTT用户就具有了sysdba权限。

注意,此时SCOTT用户可以以两种身份登录:

SCOTT,SYS.当SCOTT在登录时没有输入ASSYSDBA时,SCOTT是作为普通用户登录的。

而当登录时输入了ASSYSDBA时,此时SCOTT登录进去的用户实际上为sys。

4.当前系统中的具有sysdba权限的用户名可以从数据字典视图v$pwfile_user中查询得到:

SELECT*FROMV$PWFILE_USERS;如上图所示。

5.系统中最大的具有sysdba权限的用户数由创建密码文件时的ENTRIES参数决定。

当需要创建更多的具有sysdba权限的用户时,就需要删除原有的密码文件,重新创建一个。

这需要关闭数据库,删除密码文件,重新创建一个新的密码文件,在entries中输入足够大的数目。

再启动Oracle。

这时,所有原来北授权的超级用户都不再存在,需要重新授权。

所以在重新创建密码文件前,先要查询该视图,记下用户名,再在创建完密码文件后重新授权。

6.Internal用户密码忘记的处理方法:

有两种办法:

1.ALTERUSERSYSIDENTIFIEDBY新密码;//这同时也改变了Internal的密码,在Oracle8I中通过

2.重新创建一个新的密码文件,指定一个新的密码。

============================================================================================================================

oracle的系统和对象权限

alteranycluster修改任意簇的权限

alteranyindex修改任意索引的权限

alteranyrole修改任意角色的权限

alteranysequence修改任意序列的权限

alteranysnapshot修改任意快照的权限

alteranytable修改任意表的权限

alteranytrigger修改任意触发器的权限

altercluster修改拥有簇的权限

alterdatabase修改数据库的权限

alterprocedure修改拥有的存储过程权限

alterprofile修改资源限制简表的权限

alterresourcecost设置佳话资源开销的权限

alterrollbacksegment修改回滚段的权限

altersequence修改拥有的序列权限

altersession修改数据库会话的权限

altersytem修改数据库服务器设置的权限

altertable修改拥有的表权限

altertablespace修改表空间的权限

alteruser修改用户的权限

analyze使用analyze命令分析数据库中任意的表、索引和簇

auditany为任意的数据库对象设置审计选项

auditsystem允许系统操作审计

backupanytable备份任意表的权限

becomeuser切换用户状态的权限

commitanytable提交表的权限

createanycluster为任意用户创建簇的权限

createanyindex为任意用户创建索引的权限

createanyprocedure为任意用户创建存储过程的权限

createanysequence为任意用户创建序列的权限

createanysnapshot为任意用户创建快照的权限

createanysynonym为任意用户创建同义名的权限

createanytable为任意用户创建表的权限

createanytrigger为任意用户创建触发器的权限

createanyview为任意用户创建视图的权限

createcluster为用户创建簇的权限

createdatabaselink为用户创建的权限

createprocedure为用户创建存储过程的权限

createprofile创建资源限制简表的权限

createpublicdatabaselink创建公共数据库链路的权限

createpublicsynonym创建公共同义名的权限

createrole创建角色的权限

createrollbacksegment创建回滚段的权限

createsession创建会话的权限

createsequence为用户创建序列的权限

createsnapshot为用户创建快照的权限

createsynonym为用户创建同义名的权限

createtable为用户创建表的权限

createtablespace创建表空间的权限

createuser创建用户的权限

createview为用户创建视图的权限

deleteanytable删除任意表行的权限

deleteanyview删除任意视图行的权限

deletesnapshot删除快照中行的权限

deletetable为用户删除表行的权限

deleteview为用户删除视图行的权限

dropanycluster删除任意簇的权限

dropanyindex删除任意索引的权限

dropanyprocedure删除任意存储过程的权限

dropanyrole删除任意角色的权限

dropanysequence删除任意序列的权限

dropanysnapshot删除任意快照的权限

dropanysynonym删除任意同义名的权限

dropanytable删除任意表的权限

dropanytrigger删除任意触发器的权限

dropanyview删除任意视图的权限

dropprofile删除资源限制简表的权限

droppubliccluster删除公共簇的权限

droppublicdatabaselink删除公共数据链路的权限

droppublicsynonym删除公共同义名的权限

droprollbacksegment删除回滚段的权限

droptablespace删除表空间的权限

dropuser删除用户的权限

executeanyprocedure执行任意存储过程的权限

executefunction执行存储函数的权限

executepackage执行存储包的权限

executeprocedure执行用户存储过程的权限

forceanytransaction管理未提交的任意事务的输出权限

forcetransaction管理未提交的用户事务的输出权限

grantanyprivilege授予任意系统特权的权限

grantanyrole授予任意角色的权限

indextable给表加索引的权限

insertanytable向任意表中插入行的权限

insertsnapshot向快照中插入行的权限

inserttable向用户表中插入行的权限

insertview向用户视图中插行的权限

lockanytable给任意表加锁的权限

managertablespace管理(备份可用性)表空间的权限

referencestable参考表的权限

restrictedsession创建有限制的数据库会话的权限

selectanysequence使用任意序列的权限

selectanytable使用任意表的权限

selectsnapshot使用快照的权限

selectsequence使用用户序列的权限

selecttable使用用户表的权限

selectview使用视图的权限

unlimitedtablespace对表空间大小不加限制的权限

updateanytable修改任意表中行的权限

updatesnapshot修改快照中行的权限

updatetable修改用户表中的行的权限

updateview修改视图中行的权限

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

一、权限是用户对一项功能的执行权力。

在Oracle中,根据系统管理方式不同,将权限分为系统权限与实体权限两类。

系统权限是指是否被授权用户可以连接到数据库上,在数据库中可以进行哪些系统操作。

而实体权限是指用户对具体的模式实体(schema)所拥有的权限。

这样讲可以有些模糊,举个例子来说:

selectanytable是系统权限,它表示可以查看任何表。

而selectontable1是实体权限,表示对表table1的查询权限。

二、见上表

三、系统权限授权命令的使用

语法:

GRANT权限名TO 用户|角色|PUBLIC

其中,PUBLIC表示将权限赋给数据库中所有的用户

例:

赋给用户USER1权限CREATETABLE的授权命令如下:

SQL>GRANTCREATETABLETOUSER1;

授权语句还可以增加WITHADMINOPTION选项,表示被授权的用户可以将它所得权限赋给其它用户,如:

SQL>GRANTCREATETABLE,CREATEVIEWTOUSER1,USER2WITHADMINOPTION;

若要了解各用户所拥有的系统权限,可以查询数据字典USER_SYS_PRIVS、ROLE_SYS_PRIVS。

若要回收权限,则使用REVOKE命令,如:

SQL>REVOKECREATETABLEFROMUSER1;

四、实体权限管理

实体权限是指某一用户对某一特定schema对象的操作权限。

1.实体权限分类

不同的实体类型有不同的实体权限,如下表

...........

2.实体权限的授命令

语法如下:

GRANT实体权限名|ALLTO用户|角色|PUBLIC

其中,ALL表示实体的所有实体权限。

如:

SQL>GRANTSELECTONBOOKS_QUTHORSTOUSER1;

以下语句用来查询表的实体权限的授权信息:

SQL>SELECT*FROMUSER_TAB_PRIVES

若要回收实体权限,使用REVOKE,其语法如下:

REVOKE实体权限名|ALLON实体名FROM用户名|角色名|PUBLIC。

Oracle查看用户权限

ORACLE中数据字典视图分为3大类,用前缀区别,分别为:

USER,ALL和DBA,许多数据字典视图包含相似的信息。

USER_*:

有关用户所拥有的对象信息,即用户自己创建的对象信息

ALL_*:

有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上其他用户创建的对象但该用户有权访问的信息

DBA_*:

有关整个数据库中对象的信息

(这里的*可以为TABLES,INDEXES,OBJECTS,USERS等。

1.查看所有用户:

select*fromdba_user;

select*fromall_users;

select*fromuser_users;

2.查看用户系统权限:

sel

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

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

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

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