这里将介绍Oracle修改用户权限的实现过程,包括一些权限管理方面的东西。希望通过本文能对大家了解Oracle修改用户权限有所帮助。, @3 p6 d. R! c" S9 \ ORACLE数据库用户与权限管理; }/ g4 s: f8 u, K8 N ORACLE是多用户系统,它允许许多用户共享系统资源。为了保证数据库系统的安全,数据库管理系统配置了良好的安全机制。 * h' W, o! O: {+ u# @2. 1 ORACLE数据库安全策略- J" J) g. J2 G% I J' b0 | 建立系统级的安全保证 7 V0 `; ]7 _& j/ ~% Q1 c9 Z# U 系统级特权是通过授予用户系统级的权利来实现,系统级的权利(系统特权)包括:建立表空间、建立用户、修改用户的权利、删除用户等。系统特权可授予用户,也可以随时回收。ORACLE系统特权有80多种。 4 E6 r* |9 @9 C. M0 ]8 n" Z建立对象级的安全保证 % Q5 Y7 E% {% \! z, |9 V$ s对象级特权通过授予用户对数据库中特定的表、视图、序列等进行操作(查询、增、删改)的权利来实现。3 F3 H. g1 z% z) ^8 C! J: v 建立用户级的安全保证 5 x" b) w- U: E' ?3 Z用户级安全保障通过用户口令和角色机制(一组权利)来实现。引入角色机制的目的是简化对用户的授权与管理。做法是把用户按照其功能分组,为每个用户建立角色,然后把角色分配给用户,具有同样角色的用户有相同的特权。 * m' {% B6 Q4 v9 U2.2 用户管理 9 k I& X" X6 v5 W" K: k$ v# X; kORACLE用户管理的内容主要包括用户的建立、修改和删除) K8 O8 b* Q0 l 用户的建立 " y( D& d+ l0 C( Y5 u" N
) u M8 u/ K! M. ]+ R
z9 [) A) ~8 {4 `ORACLE 提供了80多种系统特权,其中每一个系统特权允许用户执行一个或一类数据库操作。 ; [% G" t5 K3 e* a5 V! f1 p授予系统特权 + _( c" _- J+ t0 K7 D/ C1 z
ORACLE对象特权指用户在指定的表上进行特殊操作的权利。这些特殊操作包括增、删、改、查看、执行(存储过程)、引用(其它表字段作为外键)、索引等。 & z) E6 P: f, A" X. @授予对象特权 1 g) B: I8 U5 V" R
6 p! c* U' X, kORACLE的角色是命名的相关特权组(包括系统特权与对象特权),ORACLE用它来简化特权管理,可把它授予用户或其它角色。 0 ^9 T4 e( K2 h& |7 i+ v# uORACLE数据库系统预先定义了CONNECT 、RESOURCE、 DBA、 EXP_FULL_DATABASE、 IMP_FULL_DATABASE五个角色。CONNECT具有创建表、视图、序列等特权;RESOURCE具有创建过程、触发器、表、序列等特权、DBA具有全部系统特权;EXP_FULL_DATABASE、 IMP_FULL_DATABASE具有卸出与装入数据库的特权。 4 M% w: W) H$ s& a4 B通过查询sys.dba_sys_privs可以了解每种角色拥有的权利。 , h$ N1 P: l* ?; C/ H授予用户角色 7 @6 P9 K4 C- f
4 Y$ T& `) }6 P4 @! u/ A7 G4 _. P' e一般对sysdba的管理有两种方式: *** 作系统认证和密码文件认证。具体选择那一种认证方式取决于:你是想在Oracle运行的机器上维护数据库,还是在一台机器上管理分布于不同机器上的所有的Oracle数据库。若选择在本机维护数据库,则选择 *** 作系统认证可能是一个简单易行的办法;若有好多数据库,想进行集中管理,则可以选择password文件认证方式。 9 A( |& V0 S$ C/ [8 J9 L4 J( P9 | 下图比较直观的说明了这个选择权衡过程: / B6 @. W' `# ?, ?0 Q7 p 使用 *** 作系统认证方式的配置过程: 2 |5 _: j' I7 b+ ^7 _; k$ F1. 在 *** 作系统中建立一个合法帐户。 ) p( k0 e' L+ X3 ], X 具体来说,在NT上,首先建立一个本地用户组,取名为ORA__DBA,其中SID为该数据库实例的SID,或者建立一个ORA_DBA地组,该组不对应于任何一个单独的Oracle实例。这样当一个NT上有好几个Oracle实例时,不用分别管理。然后再NT上建立一个用户,并且把它归入该组中。但是实际上这两步在Oracle8I安装过程中已经自动完成了,一般不用手动进行。 ! O, H. o& \/ a2 C第三步:在sqlnet.ora(位于$ORACLE_HOME/NETWORK/ADMIN目录中)中,把SQLNET.AUTHENTICATION _SERVICES 设置为SQLNET.AUTHENTICATION_SERVICES= (NTS),意思为使用NT认证方式。 5 U1 [. C( }' ? s第四步,在INIT.ORA中,把REMOTE_LOGIN_PASSWORD设置为NONE,意思是不用password认证方式。 8 X# \0 _, w7 j4 `5 Y7 i 完成以上步骤后,就可以在登录到NT后,直接在SQL*Plus 和SERVER MANAGER中CONNECT INTERNAL (CONNECT / AS SYSDBA)来作为超级用户登录到Oracle中,执行一些只有超级用户才能进行的 *** 作。 : B1 W1 `1 B3 n' A! g在Unix下,情况有些不同。毕竟这是两个完全不同的 *** 作系统。 G5 a: w% M6 s+ A6 Y' K; N首先,在安装Oracle之前,建立一个DBA组,这一步不用说了,不然是装不上Oracle的。一般还建立一个名为Oracle的用户,并把它加入到DBA组中。 4 S0 J# c3 T. c' Z7 K$ h4 a6 {第二步, 设置REMOTE_LOGIN_PASSWORD为NONE。在Oracle8.1以后,该参数默认为EXCLUSIVE。一定要记得改过来。 5 p8 y* i. |1 X$ @第三步, 用该用户名登录Unix,运行SQL*Plus 或者SERVER MANAGER,输入以下命令:CONNECT INTERNAL(CONNECT / AS SYSDBA)来登录到Oracle中。 : v( @$ N6 T5 e- {, ~9 z2 P" @ 使用password文件认证的具体步骤: / @) g, w/ |* I9 @, e Oracle提供orapwd实用程序来创建password 文件,运用orapwd建立该认证方式的具体步骤如下: " @5 E' p% n# v; K9 U+ Z) A s3 x1. 使用Orapwd实用程序来创建一个PASSWORD文件。语法: : h2 `) {) C1 K5 K6 Forapwd file=文件名 password=internal用户密码 entried=entries. # r9 g, P$ o; P: ^; Q7 h. z N详细解释: , B8 W9 A( y; ^' M 文件名要包含完整的全路径名,如果不指定,Oracle把它默认放置$ORACLE_HOME/dbs(Unix下)或者$ORACLE_HOME/DATABASE(NT下)下。 7 y" s5 d, v& V 用户密码是用户internal的密码。当然后来还可以再向里边加入别的超级用户。 2 L3 O" V6 a8 e; q3 M4 AEntries表示最大允许有的超级用户数目。这个是一个可选的。前两者是必须指定的。一般会把它设置的比实际需要大一些,以免不够。 . q" V, e; b3 V9 z* d- H2. 把INIT.ORA中REMOTE_LOGIN_PASSWORD设置为EXCLUSIVE 或SHARED.使用EXCLUSIVE表示只有当前INSTANCE使用这个password文件。而且允许有别的用户作为sysdba登录进系统里边,而若选择了SHARED,则表明不止一个实例使用这个密码文件,伴随着一个很强的约束:sysdba权限只能授予sys和internal这两个用户名。(其实internal不是一个实际用户,而只是sys作为sysdba登录时的一个别名。) 8 ^3 d/ `) Z% B \; x# a) [% t8 c同时还要记得把sqlnet.ora文件中SQLNET.AUTHENTICATION _SERVICES设置为NONE。一般在Unix下它是默认设置。在NT下,若选择典型安装时,会使用OS认证,而自定义时会使用密码文件认证方式。在安装过程中会提示输入INTERNAL密码。这样的话,就不用在手工创建密码文件和设定INTERNAL的密码了。 " |; H' ^' C2 V }4 M/ {- b3. 用SQL*Plus 或SERVER MANAGER运行下面命令登录进系统:CONNECT INTERNAL/密码。 5 _, ~& q( ?& _/ q+ Z" v9 [7 S! ? 0 n4 n" p- w3 s+ v# v8 Y注意点: : o0 |" ?3 y- t" o# l$ j1.在Oracle8.1.6安装在WIN2000下创建数据库时,常常会发生凭证检索失败的错误。这是由于Oracle不能应用OS认证的结果。一般可以通过修改sqlnet.ora中SQLNET.AUTHENTICATION _SERVICES为NONE来解决。这时,Oracle将采用密码文件认证方式。 - g% E+ L1 c5 h0 w& O& n 2.由于Oracle有几个系统预建的用户,所以最好在安装完成以后马上改变这些用户的密码。系统默认得密码分别为:internal/oracle , sys/change_on_install, system/manager. 5 `) k% D L3 y& A& N# ~ }3.当选择密码文件认证方式时,可以再向系统中加入其他超级用户。比如用以下语句把用户SCOTT加入超级用户之中:(由具有sysdba权限的人执行) # H, N# t, z* b/ r( [% i, o SQL>GRANT SYSDBA TO SCOTT;这样SCOTT用户就具有了sysdba权限。注意,此时SCOTT用户可以以两种身份登录:SCOTT , SYS.当SCOTT在登录时没有输入AS SYSDBA时,SCOTT是作为普通用户登录的。而当登录时输入了AS SYSDBA时,此时SCOTT登录进去的用户实际上为sys。 ; g. m3 }4 T# D 4. 当前系统中的具有sysdba权限的用户名可以从数据字典视图v$pwfile_user中查询得到: % [) o; z& T; U+ ], O. _SELECT * FROM V$PWFILE_USERS; 如上图所示。 9 B1 O E$ f, Q) [8 v5. 系统中最大的具有sysdba权限的用户数由创建密码文件时的ENTRIES参数决定。当需要创建更多的具有sysdba权限的用户时,就需要删除原有的密码文件,重新创建一个。这需要关闭数据库,删除密码文件,重新创建一个新的密码文件,在entries中输入足够大的数目。再启动Oracle。这时,所有原来北授权的超级用户都不再存在,需要重新授权。所以在重新创建密码文件前,先要查询该视图,记下用户名,再在创建完密码文件后重新授权。 L. N( m& y: s3 D# I 6. Internal用户密码忘记的处理方法: 4 z1 V, x# N' U8 V! J3 u% W/ D有两种办法: 3 J0 |" K+ H( \' k: b: S 1. ALTER USER SYS IDENTIFIED BY 新密码;//这同时也改变了Internal的密码,在Oracle8I中通过 + W! G, Y" w9 G, v/ W5 d* z 2. 重新创建一个新的密码文件,指定一个新的密码。 |
联系客服
微信登录中...
请勿关闭此页面