oracle 登陸認證
Table of Contents
1 簡介
Oracle登陸認證有兩種方式,基於操做系統的登陸認證,基於oracle的密碼驗證。css
ORACLE數據庫經過sqlnet.ora文件中的參數sqlnet.authentication_services,來控制用戶是經過操做系統認證仍是經過密碼認證進行登陸。html
而對於擁有sysdba角色的用戶,還有一個密碼文件能夠輔助密碼驗證。java
sqlnet.authentication_services、參數remote_login_passwordfile和密碼文件pwd<sid>.ora三者協同做用實現身份認證.python
2 authentication_services
Windows環境與Linux/Unix環境有區別:linux
- Windows
-
- SQLNET.AUTHENTICATION_SERVICES= (NTS)是基於操做系統驗證;
- SQLNET.AUTHENTICATION_SERVICES= (NONE)是基於Oracle驗證;
- SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)是兩者共存。
- SQLNET.AUTHENTICATION_SERVICES必須設置爲NTS或者ALL才能使用OS認證;不設置或者設置爲其餘任何值都不能使用OS認證。
- Linux/Unix
-
在linux下,在SQLNET.AUTHENTICATION_SERVICES的值設置爲
- ALL, 爲OS驗證;
- NONE或者NTS,都是基於oracle密碼驗證的。
- 不設置時,啓用OS認證和oracle密碼認證。
2.1 不一樣登陸方式的寫法
- 區分如下幾種登陸方式的區別
-
- conn / as sysdba 本機登錄,使用操做系統認證,有無監聽均可以
- conn sys/password as sysdba 本機登錄,使用密碼文件認證,有無監聽均可以
- conn sys/password@dbanote as sysdba 兼容OS認證與密碼認證。使用密碼文件認證,必須有監聽,必須有tnsnames.ora,remote_login_passwordfile必須是EXCLUSIVE
3 sysdba角色登陸認證
3.1 無密本地登陸
sqlplus / as sysdba 或者 sqlplus / nolog conn / as sysdba
以上寫法都是無密本地登陸。sql
3.2 密碼文件
密碼文件是保存擁有sysdba/sysoper等role 的用戶和密碼信息的文件 。當擁有相關role的用戶,想要登陸 數據庫實例時,若是authentication_services 要求進行密碼驗證,那麼這些用戶的密碼會經過密碼文件加以校驗。shell
建立密碼文件的語法以下:數據庫
orapwd file=<密碼文件> password=<sys用戶密碼> entries=10 force=y
說明:sass
- file——密碼文件名(必要)。默認在$Oracle_Home/dbs目錄下
- password——SYS 的密碼(必要)
- entries——DBA和操做員的最大數目(可選)
- force——是否重寫現有的文件(可選)
- 建立密碼文件時,= 號兩邊是沒有空格的。
3.3 是否開啓密碼文件驗證
Oracle提供了一個參數: remote_login_password=NONE|EXCLUSIVE|SHARED .ruby
- NONE 高級管理員登陸時,不使用密碼文件驗證
- EXCLUSIVE 高級管理員登陸時,使用密碼文件驗證,且只容許本實例使用該密碼文件。
- shared 高級管理員登陸時,使用密碼文件驗證,且容許多個實例使用該密碼文件
3.4 限制sys登陸方式
3.4.1 不限制
不設置sqlnet.authentication_services,不設置 remote_login_password. 此時,無論是無密登陸 、密碼登陸仍是遠程登陸均可以。
3.4.2 只容許本地密碼登陸
sqlnet.authentication_services=(ALL) 且 remote_login_password=exclusive 或者shared
3.4.3 只容許遠程登陸
sqlnet.authentication_services=(NTS) 且 remote_login_password=exclusive 或者shared