| 這里將介紹Oracle修改用戶(hù)權限的實(shí)現過(guò)程,包括一些權限管理方面的東西。希望通過(guò)本文能對大家了解Oracle修改用戶(hù)權限有所幫助。, @3 p6 d. R! c" S9 \ ORACLE數據庫用戶(hù)與權限管理; }/ g4 s: f8 u, K8 N ORACLE是多用戶(hù)系統,它允許許多用戶(hù)共享系統資源。為了保證數據庫系統的安全,數據庫管理系統配置了良好的安全機制。 * h' W, o! O: {+ u# @2. 1 ORACLE數據庫安全策略- J" J) g. J2 G% I J' b0 | 建立系統級的安全保證 7 V0 `; ]7 _& j/ ~% Q1 c9 Z# U 系統級特權是通過(guò)授予用戶(hù)系統級的權利來(lái)實(shí)現,系統級的權利(系統特權)包括:建立表空間、建立用戶(hù)、修改用戶(hù)的權利、刪除用戶(hù)等。系統特權可授予用戶(hù),也可以隨時(shí)回收。ORACLE系統特權有80多種。 4 E6 r* |9 @9 C. M0 ]8 n" Z建立對象級的安全保證 % Q5 Y7 E% {% \! z, |9 V$ s對象級特權通過(guò)授予用戶(hù)對數據庫中特定的表、視圖、序列等進(jìn)行操作(查詢(xún)、增、刪改)的權利來(lái)實(shí)現。3 F3 H. g1 z% z) ^8 C! J: v 建立用戶(hù)級的安全保證 5 x" b) w- U: E' ?3 Z用戶(hù)級安全保障通過(guò)用戶(hù)口令和角色機制(一組權利)來(lái)實(shí)現。引入角色機制的目的是簡(jiǎn)化對用戶(hù)的授權與管理。做法是把用戶(hù)按照其功能分組,為每個(gè)用戶(hù)建立角色,然后把角色分配給用戶(hù),具有同樣角色的用戶(hù)有相同的特權。 * m' {% B6 Q4 v9 U2.2 用戶(hù)管理 9 k I& X" X6 v5 W" K: k$ v# X; kORACLE用戶(hù)管理的內容主要包括用戶(hù)的建立、修改和刪除) K8 O8 b* Q0 l 用戶(hù)的建立 " y( D& d+ l0 C( Y5 u" N
) u M8 u/ K! M. ]+ R
z9 [) A) ~8 {4 `ORACLE 提供了80多種系統特權,其中每一個(gè)系統特權允許用戶(hù)執行一個(gè)或一類(lèi)數據庫操作。 ; [% G" t5 K3 e* a5 V! f1 p授予系統特權 + _( c" _- J+ t0 K7 D/ C1 z
ORACLE對象特權指用戶(hù)在指定的表上進(jìn)行特殊操作的權利。這些特殊操作包括增、刪、改、查看、執行(存儲過(guò)程)、引用(其它表字段作為外鍵)、索引等。 & z) E6 P: f, A" X. @授予對象特權 1 g) B: I8 U5 V" R
6 p! c* U' X, kORACLE的角色是命名的相關(guān)特權組(包括系統特權與對象特權),ORACLE用它來(lái)簡(jiǎn)化特權管理,可把它授予用戶(hù)或其它角色。 0 ^9 T4 e( K2 h& |7 i+ v# uORACLE數據庫系統預先定義了CONNECT 、RESOURCE、 DBA、 EXP_FULL_DATABASE、 IMP_FULL_DATABASE五個(gè)角色。CONNECT具有創(chuàng )建表、視圖、序列等特權;RESOURCE具有創(chuàng )建過(guò)程、觸發(fā)器、表、序列等特權、DBA具有全部系統特權;EXP_FULL_DATABASE、 IMP_FULL_DATABASE具有卸出與裝入數據庫的特權。 4 M% w: W) H$ s& a4 B通過(guò)查詢(xún)sys.dba_sys_privs可以了解每種角色擁有的權利。 , h$ N1 P: l* ?; C/ H授予用戶(hù)角色 7 @6 P9 K4 C- f
4 Y$ T& `) }6 P4 @! u/ A7 G4 _. P' e一般對sysdba的管理有兩種方式: *** 作系統認證和密碼文件認證。具體選擇那一種認證方式取決于:你是想在Oracle運行的機器上維護數據庫,還是在一臺機器上管理分布于不同機器上的所有的Oracle數據庫。若選擇在本機維護數據庫,則選擇 *** 作系統認證可能是一個(gè)簡(jiǎn)單易行的辦法;若有好多數據庫,想進(jìn)行集中管理,則可以選擇password文件認證方式。 9 A( |& V0 S$ C/ [8 J9 L4 J( P9 | 下圖比較直觀(guān)的說(shuō)明了這個(gè)選擇權衡過(guò)程: / B6 @. W' `# ?, ?0 Q7 p 使用 *** 作系統認證方式的配置過(guò)程: 2 |5 _: j' I7 b+ ^7 _; k$ F1. 在 *** 作系統中建立一個(gè)合法帳戶(hù)。 ) p( k0 e' L+ X3 ], X 具體來(lái)說(shuō),在NT上,首先建立一個(gè)本地用戶(hù)組,取名為ORA__DBA,其中SID為該數據庫實(shí)例的SID,或者建立一個(gè)ORA_DBA地組,該組不對應于任何一個(gè)單獨的Oracle實(shí)例。這樣當一個(gè)NT上有好幾個(gè)Oracle實(shí)例時(shí),不用分別管理。然后再NT上建立一個(gè)用戶(hù),并且把它歸入該組中。但是實(shí)際上這兩步在Oracle8I安裝過(guò)程中已經(jīng)自動(dòng)完成了,一般不用手動(dòng)進(jìn)行。 ! 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)來(lái)作為超級用戶(hù)登錄到Oracle中,執行一些只有超級用戶(hù)才能進(jìn)行的 *** 作。 : B1 W1 `1 B3 n' A! g在Unix下,情況有些不同。畢竟這是兩個(gè)完全不同的 *** 作系統。 G5 a: w% M6 s+ A6 Y' K; N首先,在安裝Oracle之前,建立一個(gè)DBA組,這一步不用說(shuō)了,不然是裝不上Oracle的。一般還建立一個(gè)名為Oracle的用戶(hù),并把它加入到DBA組中。 4 S0 J# c3 T. c' Z7 K$ h4 a6 {第二步, 設置REMOTE_LOGIN_PASSWORD為NONE。在Oracle8.1以后,該參數默認為EXCLUSIVE。一定要記得改過(guò)來(lái)。 5 p8 y* i. |1 X$ @第三步, 用該用戶(hù)名登錄Unix,運行SQL*Plus 或者SERVER MANAGER,輸入以下命令:CONNECT INTERNAL(CONNECT / AS SYSDBA)來(lái)登錄到Oracle中。 : v( @$ N6 T5 e- {, ~9 z2 P" @ 使用password文件認證的具體步驟: / @) g, w/ |* I9 @, e Oracle提供orapwd實(shí)用程序來(lái)創(chuàng )建password 文件,運用orapwd建立該認證方式的具體步驟如下: " @5 E' p% n# v; K9 U+ Z) A s3 x1. 使用Orapwd實(shí)用程序來(lái)創(chuàng )建一個(gè)PASSWORD文件。語(yǔ)法: : h2 `) {) C1 K5 K6 Forapwd file=文件名 password=internal用戶(hù)密碼 entried=entries. # r9 g, P$ o; P: ^; Q7 h. z N詳細解釋?zhuān)?, B8 W9 A( y; ^' M 文件名要包含完整的全路徑名,如果不指定,Oracle把它默認放置$ORACLE_HOME/dbs(Unix下)或者$ORACLE_HOME/DATABASE(NT下)下。 7 y" s5 d, v& V 用戶(hù)密碼是用戶(hù)internal的密碼。當然后來(lái)還可以再向里邊加入別的超級用戶(hù)。 2 L3 O" V6 a8 e; q3 M4 AEntries表示最大允許有的超級用戶(hù)數目。這個(gè)是一個(gè)可選的。前兩者是必須指定的。一般會(huì )把它設置的比實(shí)際需要大一些,以免不夠。 . q" V, e; b3 V9 z* d- H2. 把INIT.ORA中REMOTE_LOGIN_PASSWORD設置為EXCLUSIVE 或SHARED.使用EXCLUSIVE表示只有當前INSTANCE使用這個(gè)password文件。而且允許有別的用戶(hù)作為sysdba登錄進(jìn)系統里邊,而若選擇了SHARED,則表明不止一個(gè)實(shí)例使用這個(gè)密碼文件,伴隨著(zhù)一個(gè)很強的約束:sysdba權限只能授予sys和internal這兩個(gè)用戶(hù)名。(其實(shí)internal不是一個(gè)實(shí)際用戶(hù),而只是sys作為sysdba登錄時(shí)的一個(gè)別名。) 8 ^3 d/ `) Z% B \; x# a) [% t8 c同時(shí)還要記得把sqlnet.ora文件中SQLNET.AUTHENTICATION _SERVICES設置為NONE。一般在Unix下它是默認設置。在NT下,若選擇典型安裝時(shí),會(huì )使用OS認證,而自定義時(shí)會(huì )使用密碼文件認證方式。在安裝過(guò)程中會(huì )提示輸入INTERNAL密碼。這樣的話(huà),就不用在手工創(chuàng )建密碼文件和設定INTERNAL的密碼了。 " |; H' ^' C2 V }4 M/ {- b3. 用SQL*Plus 或SERVER MANAGER運行下面命令登錄進(jìn)系統:CONNECT INTERNAL/密碼。 5 _, ~& q( ?& _/ q+ Z" v9 [7 S! ? 0 n4 n" p- w3 s+ v# v8 Y注意點(diǎn): : o0 |" ?3 y- t" o# l$ j1.在Oracle8.1.6安裝在WIN2000下創(chuàng )建數據庫時(shí),常常會(huì )發(fā)生憑證檢索失敗的錯誤。這是由于Oracle不能應用OS認證的結果。一般可以通過(guò)修改sqlnet.ora中SQLNET.AUTHENTICATION _SERVICES為NONE來(lái)解決。這時(shí),Oracle將采用密碼文件認證方式。 - g% E+ L1 c5 h0 w& O& n 2.由于Oracle有幾個(gè)系統預建的用戶(hù),所以最好在安裝完成以后馬上改變這些用戶(hù)的密碼。系統默認得密碼分別為:internal/oracle , sys/change_on_install, system/manager. 5 `) k% D L3 y& A& N# ~ }3.當選擇密碼文件認證方式時(shí),可以再向系統中加入其他超級用戶(hù)。比如用以下語(yǔ)句把用戶(hù)SCOTT加入超級用戶(hù)之中:(由具有sysdba權限的人執行) # H, N# t, z* b/ r( [% i, o SQL>GRANT SYSDBA TO SCOTT;這樣SCOTT用戶(hù)就具有了sysdba權限。注意,此時(shí)SCOTT用戶(hù)可以以?xún)煞N身份登錄:SCOTT , SYS.當SCOTT在登錄時(shí)沒(méi)有輸入AS SYSDBA時(shí),SCOTT是作為普通用戶(hù)登錄的。而當登錄時(shí)輸入了AS SYSDBA時(shí),此時(shí)SCOTT登錄進(jìn)去的用戶(hù)實(shí)際上為sys。 ; g. m3 }4 T# D 4. 當前系統中的具有sysdba權限的用戶(hù)名可以從數據字典視圖v$pwfile_user中查詢(xún)得到: % [) o; z& T; U+ ], O. _SELECT * FROM V$PWFILE_USERS; 如上圖所示。 9 B1 O E$ f, Q) [8 v5. 系統中最大的具有sysdba權限的用戶(hù)數由創(chuàng )建密碼文件時(shí)的ENTRIES參數決定。當需要創(chuàng )建更多的具有sysdba權限的用戶(hù)時(shí),就需要刪除原有的密碼文件,重新創(chuàng )建一個(gè)。這需要關(guān)閉數據庫,刪除密碼文件,重新創(chuàng )建一個(gè)新的密碼文件,在entries中輸入足夠大的數目。再啟動(dòng)Oracle。這時(shí),所有原來(lái)北授權的超級用戶(hù)都不再存在,需要重新授權。所以在重新創(chuàng )建密碼文件前,先要查詢(xún)該視圖,記下用戶(hù)名,再在創(chuàng )建完密碼文件后重新授權。 L. N( m& y: s3 D# I 6. Internal用戶(hù)密碼忘記的處理方法: 4 z1 V, x# N' U8 V! J3 u% W/ D有兩種辦法: 3 J0 |" K+ H( \' k: b: S 1. ALTER USER SYS IDENTIFIED BY 新密碼;//這同時(shí)也改變了Internal的密碼,在Oracle8I中通過(guò) + W! G, Y" w9 G, v/ W5 d* z 2. 重新創(chuàng )建一個(gè)新的密碼文件,指定一個(gè)新的密碼。 |
聯(lián)系客服
微信登錄中...
請勿關(guān)閉此頁(yè)面
