oracle11关闭账户验证,Windows下Oracle11g中使用外部操作系统账户验证
在windows2008R2下安裝Oracle11g,在安裝oracle的服務器上可以使用OS的賬戶登陸oracle,遠程OS,比如win7也是可以使用本地OS的賬戶登陸的。
需要設置多個參數。
以dba的權限登陸oracle
C:\Users\administrator>sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on? 2月 12 16:39:03 2015
Copyright (c) 1982, 2010, Oracle.? All rights reserved.
SQL> conn / as sysdba
已連接。
SQL> show user
USER 為 "SYS"
如果顯示用戶為sys,說明服務器本機的使用OS賬戶認證是成功的。
如果不行,那么需要確定一些地方。
安裝路徑\product\11.2.0\dbhome_1\NETWORK\ADMIN
下的sqlnet.ora文件
SQLNET.AUTHENTICATION_SERVICES= (NTS)
是否括號里有NTS,?(NONE,NTS)也可以
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
這里的TNSNAMES是對應tnsnames.ora文件的,是為了sqlplus命令解析SID標示
這個標示就是orcl,對應文件里對orcl的解析說明host,port,以及SERVICE_NAME
當然用sys賬戶加密碼也能登錄。
SQL> conn sys/password as sysdba
已連接。
確定初始化參數
①SQL> show parameter os_authent_prefix
NAME???????????????????????????????? TYPE??????? VALUE
------------------------------------ ----------- ------------
os_authent_prefix??????????????????? string????? OPS$
SQL>
這個OPS$是前綴,可以為空,但是不能用null,空就用“”就好。
這是為了區別oracle用戶還是OS用戶,OS用戶前面加上OPS$
②為了遠程的客戶機可以用,
SQL> show parameter remote_os_authent
NAME???????????????????????????????? TYPE??????? VALUE
------------------------------------ ----------- ---------
remote_os_authent??????????????????? boolean???? FALSE
這里顯示為FALSE,必須修改
SQL>ALTER SYSTEM SET REMOTE_OS_AUTHENT = TRUE SCOPE = SPFILE;
然后重啟數據庫
SHUTDOWN IMMEDIATE
STARTUP
③遠程連接參數
SQL> show parameter remote_login_passwordfile
NAME???????????????????????????????? TYPE??????? VALUE
------------------------------------ ----------- -----------------
remote_login_passwordfile??????????? string????? EXCLUSIVE
EXCLUSIVE就可以了。
NONE是不允許遠程口令文件,SHARED出現在老版本,目前和EXCLUSIVE效果相同。
然后開始在oracle里做映射OS的賬戶
SQL> create user ops$administrator identified externally;
User created.
給連接等的授權
SQL> grant connect,resource to ops$administrator;
Grant succeeded.
然后現在服務器上登錄一下看看
SQL> conn /
已連接。
SQL> show user
USER 為 "OPS$ADMINISTRATOR"
加不加as sysdba是為了是否用數據庫的管理員模式登錄
下面進入遠程接續
在客戶端win7里安裝oracle的客戶端軟件
之后配置sid的連接,sqlnet.ora文件里的參數同樣必須有NTS,這是OS認證的關鍵
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)也必須有
編輯tnsnames.ora也是關鍵
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ORACLE)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
這里的(HOST = ORACLE)是那個安裝了windows2008的服務器的機器名,如果沒有域支持,需要帶完整域名,?(SERVICE_NAME = orcl)是遠程服務器上定義的服務名,不能錯。
然后在客戶端上嘗試一下
SQL> conn /
已連接。
SQL> show user
USER 為 "OPS$ADMINISTRATOR"
這樣做方便是方便了,但是安全性就喪失了。
來嘗試一下,在客戶機做一個administrator賬號,但是和服務器的administrator賬戶的密碼不同,還能連接上嗎,答案是肯定的,還是可以。也就是說,remote_os_authent為true的時候,服務器端是不確認密碼的,是在客戶端的OS上確認密碼,那么客戶端如果自己有管理員權限,那么做什么名字的賬戶都可以,就沒安全性了,當然使用必須是在隔離與互聯網的環境下,不然死的更難看。也應該在域的環境下使用,客戶端的登錄用戶都由域來控制,認證的用戶名帶域名認證,確??蛻舳撕头掌鞫说恼J證都可以信任。如果想忽略域名認證用戶名,可以在服務器端的OS里修改注冊表
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1
添加文字列OSAUTH_PREFIX_DOMAIN,值為FALSE
當然不推薦這么做。
原文:http://xushen.blog.51cto.com/1673219/1614106
總結
以上是生活随笔為你收集整理的oracle11关闭账户验证,Windows下Oracle11g中使用外部操作系统账户验证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php自动加载指定类,PHP自动加载类-
- 下一篇: java信息管理系统总结_java实现科