oracle無密碼登錄
從Oracle10gR2開始, 通過使用Oracle Wallet達到任意用戶不使用密碼登錄數據庫(非操作系統認證方式),這對於用腳本登錄數據庫進行操作來說是非常有用的;尤其對於企業安全要求很高,不希望用戶名和密碼明文存在配置文件中,而且對於密碼的維護是極為方便的,比如我把wallet放在指定路徑下,當修改密碼時,只需統一覆蓋wallet即可,對於有大量應用服務器尤為方便。
C:\app\Administrator\virtual\product\12.2.0\dbhome_2\bin>mkstore -wrl e:\wallet -create
Oracle Secret Store Tool: 版本 12.2.0.1.0
輸入口令:
PKI-01002: 口令無效。口令至少要有 8 個字符並且應該同時包含字母和數字 (或特殊字符)。
輸入口令:
PKI-01002: 口令無效。口令至少要有 8 個字符並且應該同時包含字母和數字 (或特殊字符)。
C:\app\Administrator\virtual\product\12.2.0\dbhome_2\bin>mkstore -wrl e:\wallet -create
Oracle Secret Store Tool: 版本 12.2.0.1.0
版權所有 (c) 2004, 2016, Oracle 和/或其子公司。保留所有權利。
輸入口令:
再次輸入口令:
e:\wallet>dir
驅動器 E 中的卷是 新加卷
卷的序列號是 A80D-EB59
e:\wallet 的目錄
2018/02/05 10:34 <DIR> .
2018/02/05 10:34 <DIR> ..
2018/02/05 10:34 194 cwallet.sso
2018/02/05 10:34 0 cwallet.sso.lck
2018/02/05 10:34 149 ewallet.p12
2018/02/05 10:34 0 ewallet.p12.lck
2 個目錄 200,386,322,432 可用字節
tnsping.ora加入
scott_10.8.5.206 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.8.5.206)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =newtest)
)
)
C:\app\Administrator\virtual\product\12.2.0\dbhome_2\bin>mkstore -wrl e:\wallet -createCredential scott_10.8.5.206 c##scott tiger
Oracle Secret Store Tool: 版本 12.2.0.1.0
版權所有 (c) 2004, 2016, Oracle 和/或其子公司。保留所有權利。
輸入 Wallet 口令:
e:\wallet>sqlplus /@scott_10.8.5.206
SQL*Plus: Release 12.2.0.1.0 Production on 星期一 2月 5 11:08:58 2018
Copyright (c) 1982, 2016, Oracle. All rights reserved.
上次成功登錄時間: 星期一 2月 05 2018 11:08:36 +08:00
連接到:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
在客戶端使用wallet無密碼登錄的步驟:
1.創建wallet(tnsname.ora裏面的連接串,sqlnet.ora文件內容都要復制到客戶端)
2.把wallet復制到客戶端指定路徑(註意文件權限和屬主)
3.修改客戶端的tnsname.ora文件裏連接服務器的連接串為創建時的連接串,在sqlnet.ora文件裏添加如下內容:
WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=e:\wallet)))
SQLNET.WALLET_OVERRIDE = TRUE
4.在sqlplus無密碼等裏測試
sqlplus /@scott_10.8.5.206
在jdbc裏連接數據庫密碼形式如下:
public static Connection getConnection() throws SQLException {
DriverManager.registerDriver(new OracleDriver());
Connection conn = DriverManager.getConnection("jdbc:oracle:oci:/@scott_10.8.5.206");
br/>.getConnection("jdbc:oracle:oci:/@scott_10.8.5.206");
return conn;
}
oracle無密碼登錄