一、Oracle的權(quán)限驗證方式:
?
??? Oracle
的驗證方式取決于三個屬性:
??? *
SQLNET.ORA參數(shù)文件中的參數(shù)SQLNET.AUTHENTICATION_SERVICES設(shè)置
??? *
PFILE(SPFILE)參數(shù)文件中的參數(shù)REMOTE_LOGIN_PASSWORDFILE設(shè)置
??? *
口令文件orapw$SID(Linux) | PWD$SID.ora(Windows)
?
???
Oracle權(quán)限認(rèn)證的基本順序是這樣的:先由SQLNET.AUTHENTICATION_SERVICES的設(shè)置值來決定是使用OS認(rèn)證還是口令文件認(rèn)證,如果使用口令文件認(rèn)證的話就要看后面兩個條件了:如果REMOTE_LOGIN_PASSWORDFILE參數(shù)設(shè)置為非NONE而且口令文件存在的話就能正常使用口令文件認(rèn)證,否則將會失敗。
?
?????
?
???
1
、
OS
驗證
?????
①
為用戶創(chuàng)建操作系統(tǒng)帳號
?????
②
講用戶添加到
Oracle
安裝時定義的組中(安裝介質(zhì)時創(chuàng)建)
?????
③
設(shè)置REMOTE_LOGIN_PASSWORDFILE為
NONE
?
????? SQL> CONN / AS SYSDBA
????? SQL> CONN / AS SYSOPER
?
???
2
、密碼文件驗證
?????
①
為用戶創(chuàng)建操作系統(tǒng)帳號
?????
②
創(chuàng)建密碼文件:
ORAPWD FILE=file_name PASSWORD=password ENTRIES=max_users
?????
③
將REMOTE_LOGIN_PASSWORDFILE設(shè)為
EXCLUSIVE
?????
④
以
SYS
用戶登陸,創(chuàng)建用戶,并
GRANT SYSDBA to scott
?????
* GRANT SYSDBA
語句即將用戶加入密碼文件中
?
????? SQL> CONN scott/password AS SYSDBA
?
???
詳細(xì)的情況參見:
http://www.lansz.com/html/2008/06/oracle_os_pwfile_authentication.html
?
二、密碼文件管理
?
???
1
、創(chuàng)建:
?
????? ORAPWD FILE=file_name PASSWORD=password ENTRIES=max_users
?
????? FILE
:指定完整路徑名的文件,經(jīng)過加密無法直接讀取。
RAC
中多個實例必須指向一個密碼文件。
????? PASSWORD
:
SYS
用戶密碼,使用
ALTER
修改
SYS
密碼時,密碼文件中隨之修改。
????? ENTRIES
:密碼文件可以接受的登陸個數(shù),通常是
4
的倍數(shù),可以超出,但最好有多。
?
???
2
、REMOTE_LOGIN_PASSWORDFILE:
?
????? NONE
:默認(rèn)值,結(jié)果是返回密碼文件不存在的結(jié)果。
????? EXCLUSIVE
:密碼文件只能用于一個數(shù)據(jù)庫,可以講
SYSDBA/SYSOPER
權(quán)限授予個人用戶
????? SHARED
:可用于多個數(shù)據(jù)庫,但只能針對
SYS
用戶
(
用于一個管理員管理多個數(shù)據(jù)庫時
)
?
???
3
、密碼文件用戶查看
?
?????
select
*
from
v$pwfile_users;
?
???
4
、增加密碼文件的用戶數(shù)目:
?
????? *
查找v$pwfile_users中的密碼文件數(shù)目
????? *
關(guān)閉數(shù)據(jù)庫
????? *
刪除現(xiàn)有密碼文件
????? *
用
ORAPWD
重新創(chuàng)建密碼文件,將
ENTRIES
設(shè)置得大一點
????? *
重新將密碼文件用戶添加進(jìn)去
?????
*
注意刪除和重新建立之后必須重新添加,因為時間標(biāo)記和校驗不同
?
?