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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 登陸認證框架:SpringSecurity框架SpringGse
- 中介軟體---登陸認證授權---Shiro
- 登陸驗證
- 盤點Mysql的登陸方式MySql
- 遊戲登陸主機的認證測試該怎麼做?遊戲
- 帝國CMS忘記後臺登陸認證碼怎麼辦?
- 系統登入認證流程對比(cookie方式與jwt)CookieJWT
- 一文徹底搞定Spring Security 認證,實現登陸登出功能Spring
- Oracle 認證下載Oracle
- ETL認證申請方式
- Spring boot 入門(四):整合 Shiro 實現登陸認證和許可權管理Spring Boot
- 【認證與授權】2、基於session的認證方式Session
- passport API 認證 -- 多表登入PassportAPI
- 酒店賓館無線上網認證手機認證方式
- SpringSceurity(5)---簡訊驗證碼登陸功能Spring
- Kubernetes客戶端認證——基於CA證書的雙向認證方式客戶端
- SSH安全登陸原理:密碼登陸與公鑰登陸密碼
- Flask Session 登入認證模組FlaskSession
- JWT登入認證-專案BotBattleJWTBAT
- Redis使用認證密碼登入Redis密碼
- 深透醫療AI影像產品獲FDA認證,SubtlePET將正式登陸美國市場AI
- ssh方式登入雲伺服器時設定別名登陸伺服器
- Jenkins API使用者認證方式JenkinsAPI
- 認證系統之登入認證系統的進階使用 (二)
- 9.Django之登陸註冊驗證登出Django
- PbootCms後臺登陸不顯示驗證碼boot
- 易優cms網站後臺登陸驗證碼錯誤,如何不使用驗證碼登陸?或者如何修復?網站
- 實戰模擬│JWT 登入認證JWT
- JWT實現登入認證例項JWT
- se://error/ Oracle 19c EM Exporess無法登陸ErrorOracle
- 【Spring Security】實現多種認證方式Spring
- Oracle認證介紹及入門心得Oracle
- Shiro+Spring+SpringMVC+Mybatis+資料庫整合並進行登陸認證和授權詳細配置SpringMVCMyBatis資料庫
- 登陸介面模組解析——生成圖片驗證碼
- 新!Web身份驗證新標,支援免密登陸Web
- AJAX+JAVA使用者登陸註冊驗證Java
- tp登陸
- 共享登陸
- uniapp 完成兩種方式登入 驗證碼登入 密碼登入APP密碼