oracle登陸認證方式
案例:
1,發現此時作業系統認證不成功:
C:\Users\Administrator.WIN-20100719IOX>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 12月 31 14:25:52 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
ERROR:
ORA-01031: insufficient privileges
請輸入使用者名稱:
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
請輸入使用者名稱:
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
SP2-0157: 在 3 次嘗試之後無法連線到 ORACLE, 退出 SQL*Plus
2, 檢視sqlnet.ora 檔案內容:
# sqlnet.ora Network Configuration File: C:\app\Administrator\product
\11.2.0\dbhome_1\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
3,檢查compmgmt.msc, 在命令列下敲入進入計算機管理,選擇本地使用者和組—>組,發現一個組的名字叫做ORA_DBA,未把administrator使用者加入該組
4,把administrator使用者新增到該組後,此時可用作業系統認證登入Oracle資料庫:
C:\Users\Administrator.WIN-20100719IOX>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 12月 31 14:30:50 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL>
現象:
C:\>sqlplus "/as sysdba"
SQL*Plus:Release 10.2.0.1.0 - Production on Fri Nov 2 16:16:22 2007
Copyright (c) 1982, 2005, Oracle. All right reserved.
ERROR:
ORA-01031: insufficient privileges
Enter user-name:
這個錯誤一般是由於Oracle登入認證出現了問題:
Oracle登入認證有兩種方式,基於作業系統的登入認證,基於Oracle密碼檔案的驗證。
可以通過改變sqlnet.ora檔案,可以修改Oracle登入認證方式:
SQLNET.AUTHENTICATION_SERVICES= (NTS)是基於作業系統驗證;
SQLNET.AUTHENTICATION_SERVICES= (NONE)是基於Oracle密碼檔案驗證;
SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)是二者共存。
經過測試,以上規則只適用於WINDOWS伺服器,在LINUX下規則如下:
預設情況下LINUX下的Oracle資料庫sqlnet.ora檔案沒有SQLNET.AUTHENTICATION_SERVICES引數,此時是基於作業系統認證和Oracle密碼檔案驗證共存的,加上SQLNET.AUTHENTICATION_SERVICES引數後,不管SQLNET.AUTHENTICATION_SERVICES設定為NONE或者NTS,都是基於Oracle密碼驗證的。
Windows下設定Oracle登入驗證為作業系統驗證方式的方法:
1:把os使用者加到ora_dba組
2:設定sqlnet.ora SQLNET.AUTHENTICATION_SERVICES = (NTS)
或者你可以重建口令檔案來改密碼,只不過原來授予sysdba和sysoper許可權的使用者,就不再具有這2個許可權了。
有一種Oracle的登入方式是作業系統驗證登入方式,即常說的OS驗證登入方式,在SQL server中也有這種方式。當用Windows的管理員帳戶登陸系統後登陸資料庫,只要加上 as sysdba,不管用什麼使用者名稱和密碼登陸,都正確,因為這時系統已經忽略了/ 兩邊的使用者名稱和密碼,預設就是sys使用者。有些朋友經常使用connect / as sysdba登入,但不知道為什麼沒有提供使用者名稱和密碼就得到了sysdba的許可權。還認為這樣是不是不安全呢?
Oracle在常見的多使用者作業系統上都可以進行OS認證方式來登入。例如SOLARIS,WINDOWS等等。下面以常見的WINDOWS作業系統來說明看一下這個作業系統認證方式登入的原理。如果你的機器可以使用connect / as sysdba獲取sysdba的許可權,那麼下面的每一個過程你的機器上都會得到驗證,如果不能,按照下面的操作更改後,你也能以這種方式登入。在命令列下敲入compmgmt.msc進入計算機管理,選擇本地使用者和組—>組,看是不是有一個組的名字叫做ORA_DBA,雙擊改組可以看到裡面是不是有administrator使用者,想一想你是不是以administrator使用者登入的呢?再進入Oracle安裝目錄(即$ORACLE_HOME),找到sqlnet.ora檔案看看裡面的是不是有SQLNET.AUTHENTICATION_SERVICES= (NTS), 如果這些都對的話,你就能以作業系統認證的方式(connect / as sysdba)來登入Oracle。
接下來的問題是,如果你的資料很重要,出於安全考慮,希望禁止這種作業系統認證的方式。那麼該怎麼做呢?很簡單,找到在剛才的第6步驟中的sqlnet.ora檔案,將SQLNET.AUTHENTICATION_SERVICES= (NTS)改為SQLNET.AUTHENTICATION_SERVICES=(NONE)即可。你再試一下看看會不會得到到如下結果:
ERROR:
ORA-01031: insufficient privileges
警告: 您不再連線到 ORACLE。
如果你的機器不能以系統認證的方式登入,檢查以上幾個步驟,你總可以找到原因的。
附:
要知道以下幾種登陸方式不是一種概念
sqlplus /nolog
1: conn / as sysdba 本機登陸,使用作業系統認證,有無監聽都可以
2: conn sys/password as sysdba 本機登陸,使用密碼檔案或作業系統認證,有無監聽都可以
3: conn sys/password@dbanote as sysdba 可以本機可以遠端,使用密碼檔案認證,必須有監聽,必須有tnsnames.ora,remote_login_passwordfile必須是EXCLUSIVE
說明:
從Oracle的解釋可以知道,SQLNET.AUTHENTICATION_SERVICES=(NTS)是WINDOWS系統專用的,對LINUX/UNIX是不適用的。
最後做一個簡單的總結:
1、在WINDOWS下,SQLNET.AUTHENTICATION_SERVICES必須設定為NTS或者ALL才能使用OS認證;不設定或者設定為其他任何值都不能使用OS認證。
2、在LINUX下,在SQLNET.AUTHENTICATION_SERVICES的值設定為ALL,或者不設定的情況下,OS驗證才能成功;設定為其他任何值都不能使用OS認證。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14359/viewspace-683064/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle兩種登陸認證方式Oracle
- 自己整理的oracle登陸的認證方式。Oracle
- 關於ORACLE登陸認證Oracle
- 【登陸認證】oracle的作業系統認證和口令檔案認證方式(轉載)Oracle作業系統
- 通通透透分析Oracle的登陸認證方式(10g)Oracle
- 以sysdba角色登陸oracle的兩種認證方式測試備記Oracle
- sqlnet.ora 驗證oracle 登陸方式SQLOracle
- 登陸認證框架:SpringSecurity框架SpringGse
- ORACLE登陸方式的研究Oracle
- Spring整合shiro做登陸認證Spring
- 中介軟體---登陸認證授權---Shiro
- Oracle中兩種認證方式:OS認證與口令檔案認證Oracle
- oracle 登陸Oracle
- sqlplus登陸方式SQL
- 遊戲登陸主機的認證測試該怎麼做?遊戲
- 作業系統認證與ORACLE密碼檔案認證方式作業系統Oracle密碼
- oracle兩種認證方式總結(ZT)Oracle
- ORACLE登入驗證方式的詳解Oracle
- 盤點Mysql的登陸方式MySql
- 建站篇-使用者認證系統-管理員登陸後臺
- 帝國CMS忘記後臺登陸認證碼怎麼辦?
- curl模擬請求、登陸以及帶驗證碼登陸
- oracle 登陸限制ipOracle
- ORACLE登陸包描述Oracle
- 系統登入認證流程對比(cookie方式與jwt)CookieJWT
- 使用Oracle外部身份認證登入資料庫Oracle資料庫
- Oracle登陸觸發器Oracle觸發器
- oracle登陸限制指令碼Oracle指令碼
- 一文徹底搞定Spring Security 認證,實現登陸登出功能Spring
- 【ORACLE】oracle 使用者(sysdba)遠端登入和口令認證Oracle
- MySQL登入驗證方式MySql
- 【連線】禁止以作業系統認證方式登入資料庫作業系統資料庫
- Linux下的ssh認證,不用密碼登陸另一臺機器(轉)Linux密碼
- 非Oracle使用者使用作業系統驗證登陸(/ as sysdba)Oracle作業系統
- oracle登陸設定指令碼Oracle指令碼
- 【認證與授權】2、基於session的認證方式Session
- Flask Session 登入認證模組FlaskSession
- passport API 認證 -- 多表登入PassportAPI