通通透透分析Oracle的登陸認證方式(10g)
a.歡迎對本帖補充、建議、更正
b.測試環境rhel5.4+Ora10.2.0.1.0
c.為節省篇幅,部分輸出結果做了精簡
第01部分 伺服器端OS認證(預設啟用)
01.1 以安裝Oracle的使用者登入OS
[size=9.5pt]不論輸入什麼使用者,只要以[size=9.5pt]sysdba[size=9.5pt]許可權連線資料庫,都可以連線上,並且連線使用者是[size=9.5pt]sys[size=9.5pt]。
[size=9.5pt]有時候,如果忘記了資料庫的密碼,而又想登入資料庫,可以通過這種方式,前提是在資料庫伺服器上。
SQL> connect / as sysdba
Connected.
SQL> connect sys/aaa as sysdba
Connected.
SQL> connect sys/bbb as sysdba
Connected.
SQL> connect aaa/bbb as sysdba
Connected. //[size=9.5pt]哪怕這個使用者如[size=9.5pt]aaa[size=9.5pt]在資料庫中根本不存在
SQL> show user
USER is "SYS"
SQL> alter user sys identified by install;
User altered.
SQL> connect sys/install@192.168.188.128:1521/orcl
ERROR:
ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
Warning: You are no longer connected to ORACLE.
SQL> connect sys/install@192.168.188.128:1521/orcl as sysdba
Connected.
SQL> show user
USER is "SYS"
01.2 以非安裝oracle使用者登入OS
# su – oracle
$ sqlplus / as sysdba
SQL> show parameter auth
NAME TYPE VALUE
---------------- ---------- -------
os_authent_prefix string ops$
remote_os_authent boolean FALSE
SQL> create user ops$zcs1 identified by oracle;
User created.
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
$exit
# useradd -g oinstall -G dba zcs1
# echo oracle|passwd --stdin zcs1
# su - zcs1
$ export ORACLE_SID=orcl
$ export ORACLE_BASE=/u01/app/oracle
$ export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
$ export PATH=$ORACLE_HOME/bin:$PATH
$ sqlplus / as sysdba
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
SQL>
01.3 遮蔽OS認證(以linux為例)
OS 認證有一定安全隱患,可以把相關係統使用者刪除,也可以修改sqlnet.ora檔案。
在刪除密碼檔案後,若想要以管理員身份連入資料庫的話,則必須使用作業系統驗證的方法進行登入。
$ cd $ORACLE_HOME/network/admin;ls sqlnet.ora
ls: sqlnet.ora: No such file or directory
$ echo 'SQLNET.AUTHENTICATION_SERVICES=(NONE)' > sqlnet.ora
$ sqlplus / as sysdba //提示,需輸入正常的使用者名稱和密碼
ERROR:
ORA-01031: insufficient privileges
Enter user-name:
$cd $ORACLE_HOME/network/admin
$mv sqlnet.ora sqlnet.ora.bak //重新啟動用OS認證
********************************************************************************************
第02部分 密碼檔案認證
在Oracle中,使用者如果要以特權使用者身份(INTERNAL/SYSDBA/SYSOPER)登入Oracle資料庫可以有兩種身份驗證的方法:
1、使用與OS整合的身份驗證OS認證意思把登入資料庫的使用者和口令校驗放在了OS一級。
當sys密碼不記得可以使用OS系統身份認證登陸到sqlplus,再使用alter user修改密碼。
2、使用Oracle資料庫的password file進行身份驗證由於僅被授予SYSOPER/SYSDBA系統許可權的使用者才存在於密碼檔案中,由此,向密碼檔案中增加或刪除某一使用者,實際上也就是對某一使用者授予或收回SYSOPER/SYSDBA系統許可權。
3、建立密碼檔案的命令不管是在建立例項時自動建立的密碼檔案,還是使用手工建立的密碼檔案,都只包含INTERNAL/SYS使用者的資訊;
orapwd file=orapworcl password=oracle force=y
orapwd file=>
password=< sys使用者的密碼>
entries=
force=02.1 建立密碼檔案
[size=9.5pt]在實際開發中,要把作業系統驗證給取消掉,那以後就會採用密碼驗證了。但是假如我們把密碼忘記了,又如何解決呢:重新生成密碼檔案即可。
一、使用orapwd建立,修改密碼檔案
$ cd $ORACLE_HOME/network/admin
$ mv sqlnet.ora.bak sqlnet.ora
$ strings sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES=(NONE)
$ sqlplus / as sysdba
ERROR:
ORA-01031: insufficient privileges
Enter user-name:
$ cd $ORACLE_HOME/dbs
$ ls orapw*
orapworcl
$ strings orapworcl|grep -i test
TEST
$ orapwd file=orapworcl password=redhat //重建密碼檔案修改密碼
OPW-00005: File with same name exists - please delete or rename
$ orapwd file=orapworcl password=oracle force=y //改密碼
$ strings orapworcl|grep -i test
$ sqlplus sys/oracle as sysdba
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
二、擴充套件密碼檔案的使用者數量
當向密碼檔案新增的帳號數目超過建立密碼檔案時所定的限制時,為擴充套件密碼檔案的使用者數限制,需重建密碼檔案。
$ orapwd file=orapworcl password=redhat entries=1
$ strings $ORACLE_HOME/dbs/orapworcl
]\[Z
ORACLE Remote Password file
INTERNAL
F7AC0C5E9C3C37AB
E100B964899CDDDF
//8i之前用internal使用者來執行資料庫的啟動和關閉以及create database等操作,為保持使用者習慣在8i中依舊保留了internal使用者和svrmgrl,但已完全可以不使用svrmgrl工具和 internal使用者了。
SQL> begin
for i in 1..6 loop
execute immediate 'create user u'||i||' identified by u'||i||'';
end loop;
end;
/
PL/SQL procedure successfully completed.
SQL> begin
for i in 1..6 loop
execute immediate 'grant sysdba to u'||i||'';
end loop;
end;
/
begin
*
ERROR at line 1:
ORA-01996: GRANT failed: password file '' is full
ORA-06512: at line 3
SQL> host strings $ORACLE_HOME/dbs/orapworcl
]\[Z //再次檢視orapworcl發現多出了行,該二進位制檔案按矩陣計算可存放多少
ORACLE Remote Password file
INTERNAL
F7AC0C5E9C3C37AB
E100B964899CDDDF
3E81B724A296E296
668509DF9DD36B43
9CE6AF1E3F609FFC
7E19965085C9ED47
三、檢視密碼檔案放了多少個sysoper/sysdba使用者
可以通過查詢檢視V$PWFILE_USERS來獲取擁有SYSOPER/SYSDBA系統許可權的使用者的資訊,表中SYSOPER/SYSDBA列的取值TRUE/FALSE表示此使用者是否擁有相應的許可權。這些使用者也就是相應地存在於密碼檔案中的成員。
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
zcs FALSE TRUE
U1 TRUE FALSE
U2 TRUE FALSE
U3 TRUE FALSE
02.2 使用密碼認證
一、建立密碼檔案
$ cd /u01/app/oracle/product/10.2.0/db_1/dbs
$ orapwd file=orapworcl password=redhat force=y
$ strings orapworcl
]\[Z
ORACLE Remote Password file
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A
二、開啟密碼檔案認證cd $ORACLE_HOME/network/admin; //開啟密碼檔案認證
echo 'SQLNET.AUTHENTICATION_SERVICES=(NONE)' > sqlnet.ora
三、通過授權sysdba,密碼檔案中增加scott的資訊REMOTE_LOGIN_PASSWORDFILE初始化引數檔案中,此引數控制著密碼檔案的使用及其狀態 (NONE:不使用密碼檔案,特權使用者的登入通過OS進行身份驗證) 。
[size=9.5pt]1[size=9.5pt]、[size=9.5pt]SHARED([size=9.5pt]密碼檔案可多例項使用[size=9.5pt],[size=9.5pt] [size=9.5pt]僅[size=9.5pt]INTERNAL[size=9.5pt]/[size=9.5pt]SYS[size=9.5pt]能特權登陸[size=9.5pt])shared口令檔案不能被編輯。即不能向shared口令檔案增加使用者。如果要增加使用者或修改sysdba、sysoper使用者的密碼,需要設定REMOTE_LOGIN_PASSWORDFILE引數為exclusive然後再設定為shared。
SQL>alter system set remote_login_passwordfile=shared scope=spfile;
System altered. //改為shared
SQL>startup force;
ORACLE instance started. //為了使修改生效,重啟資料庫
SQL>alter user sys identified by system;
ERROR at line 1: //修改sys使用者的口令
ORA-28046: Password change for SYS disallowed
SQL>grant sysdba to scott;
ERROR at line 1: //為scott使用者授予sysdba許可權
ORA-01999: password file cannot be updated in SHARED mode
[size=9.5pt]2[size=9.5pt]、[size=9.5pt]EXCLUSIVE([size=9.5pt]只有一個資料庫例項可以使用此密碼檔案[size=9.5pt])只有在此設定下的密碼檔案可以包含有除INTERNAL/SYS以外的使用者資訊。
SQL>alter system set remote_login_passwordfile=exclusive scope=spfile;
System altered. //改為exclusive
SQL> show parameter remote_login_passwordfile
remote_login_passwordfile EXCLUSIVE
SQL>startup force;
ORACLE instance started. // 為了使引數生效,重啟資料庫
SQL>alter user sys identified by system;
User altered. // 修改sys使用者的密碼
SQL>grant sysdba to scott;
Grant succeeded. //為scott使用者授予sysdba許可權
SQL> host strings orapworcl
]\[Z
ORACLE Remote Password file
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A
SCOTT
7AA1A84E31ED7771
四、禁用OS認證$ cd $ORACLE_HOME/network/admin
$ ls sqlnet.ora
ls: sqlnet.ora: No such file or directory
$ echo 'SQLNET.AUTHENTICATION_SERVICES=(NONE)' > sqlnet.ora
$ sqlplus / as sysdba //提示,需輸入正常的使用者名稱和密碼
ERROR:
ORA-01031: insufficient privileges
Enter user-name:
五、登陸後顯示的賬戶資訊是sys,而非scott
$ sqlplus scott/tiger as sysdba
SQL> show user
USER is "SYS"
******************************************************************************************************************************
第03部分 使用字典認證(非DBA)
只有在資料庫run狀態下普通使用者連線上資料庫時通過儲存在字典表中的使用者口令來進行鑑權認證。
一、建立使用者並授授予SYSDBA許可權$ sqlplus / as sysdba
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
SQL> select INSTANCE_NAME,STATUS from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
orcl OPEN
SQL> create user ZCS identified by ZCS;
User created.
SQL>select USERNAME,PASSWORD from dba_users where USERNAME='ZCS';
USERNAME PASSWORD
------------------------- ---------------------
ZCS 8C4FBF9DAA31F429
SQL> grant create session to zcs;
Grant succeeded.
二、禁用密碼認證並刪除密碼檔案SQL> show parameter remote_login_passwordfile
remote_login_passwordfile EXCLUSIVE(預設)
SQL>alter system set remote_login_passwordfile=NONE scope=spfile;
System altered. //禁用密碼認證
SQL>startup force;
ORACLE instance started. //為了使修改生效,重啟資料庫
SQL>host
$cd $ORACLE_HOME/dbs/
$mv orapworcl orapworcl.bak
三、禁用OS認證(使用者和密碼完成正確才能登入)客戶端網路配置檔案sqlnet.ora中的引數用來決定是採用OS層面的鑑權認證還是密碼檔案的鑑權認證。
$ cd $ORACLE_HOME/network/admin;ls sqlnet.ora
ls: sqlnet.ora: No such file or directory
$ echo 'SQLNET.AUTHENTICATION_SERVICES=(NONE)' > sqlnet.ora
四、使用資料字典認證登陸$exit
exit
SQL> conn zcs/zcs
Connected.//預設可以使用OS認證
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/210154/viewspace-756891/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle登陸認證方式Oracle
- oracle兩種登陸認證方式Oracle
- 自己整理的oracle登陸的認證方式。Oracle
- 【登陸認證】oracle的作業系統認證和口令檔案認證方式(轉載)Oracle作業系統
- 關於ORACLE登陸認證Oracle
- 以sysdba角色登陸oracle的兩種認證方式測試備記Oracle
- sqlnet.ora 驗證oracle 登陸方式SQLOracle
- ORACLE登陸方式的研究Oracle
- 登陸認證框架:SpringSecurity框架SpringGse
- Spring整合shiro做登陸認證Spring
- 中介軟體---登陸認證授權---Shiro
- Oracle中兩種認證方式:OS認證與口令檔案認證Oracle
- 通過oracle 10g ocm 認證Oracle 10g
- 遊戲登陸主機的認證測試該怎麼做?遊戲
- ORACLE登入驗證方式的詳解Oracle
- 盤點Mysql的登陸方式MySql
- oracle 登陸Oracle
- sqlplus登陸方式SQL
- ORACLE 10G使用SQLNET.ORA限制IP登陸Oracle 10gSQL
- 作業系統認證與ORACLE密碼檔案認證方式作業系統Oracle密碼
- oracle兩種認證方式總結(ZT)Oracle
- 通通透透看無伺服器計算:由來、場景和問題伺服器
- 建站篇-使用者認證系統-管理員登陸後臺
- curl模擬請求、登陸以及帶驗證碼登陸
- oracle 登陸限制ipOracle
- ORACLE登陸包描述Oracle
- 系統登入認證流程對比(cookie方式與jwt)CookieJWT
- Linux下的ssh認證,不用密碼登陸另一臺機器(轉)Linux密碼
- 簡單抓包分析:LDAP的simple方式認證過程LDA
- 【認證與授權】2、基於session的認證方式Session
- 使用Oracle外部身份認證登入資料庫Oracle資料庫
- Oracle登陸觸發器Oracle觸發器
- oracle登陸限制指令碼Oracle指令碼
- 【ORACLE】oracle 使用者(sysdba)遠端登入和口令認證Oracle
- 有關10g em登陸的問題總結
- 10g Sqlplus工具登陸小改進SQL
- MySQL登入驗證方式MySql
- 【連線】禁止以作業系統認證方式登入資料庫作業系統資料庫