ORACLE wallet实现无需输入用户名与密码登陆数据库

在ORACLE 10G前,我们在SHELL或JDBC中连接数据库时,都需要输入用户名与密码,并且都是明文。从1OGR2开始,ORACLE提供wallet这个工具,可以实现无需输入用户名与密码就可以登陆数据库,如下:

一般情况:sqlplus scott/oracle@htzdg

用wallet后:sqlplus /@htzdg

测试环境:

server :solaris 10,oracle 11gr2

client :win 7,oracle11gr2

登陆端配置tnsnames.ora文件,增加下面几行

复制代码
  1. HTZDG =
  2. (DESCRIPTION =
  3. (ADDRESS_LIST =
  4. (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.30)(PORT = 1521))
  5. )
  6. (CONNECT_DATA =
  7. (SERVER = DEDICATED)
  8. (SERVICE_NAME = htzdg)
  9. )
  10. )

测试是否可以正常解析

复制代码
  1. C:\Users\luoping>tnsping htzdg
  2. TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 29-8月 -
  3. 2012 21:40:40
  4. Copyright (c) 1997, 2010, Oracle. All rights reserved.
  5. 已使用的参数文件:
  6. D:\app\luoping\product\11.2.0\client_1\network\admin\sqlnet.ora
  7. 已使用 TNSNAMES 适配器来解析别名
  8. 尝试连接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.1
  9. 68.100.30)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = h
  10. tzdg)))
  11. OK (40 毫秒)
  12. C:\Users\luoping>

下面是开始配置wallet

1,创建一个wallet

复制代码
  1. D:\app\luoping\product\11.2.0\client_1\BIN>mkstore -wrl D:\app\luoping\product\11.2.0\client_1\pstore -create
  2. Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
  3. 版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
  4. 输入口令:
  5. 再次输入口令:
  6. D:\app\luoping\product\11.2.0\client_1\BIN>cd ../
  7. D:\app\luoping\product\11.2.0\client_1>cd pstore
  8. D:\app\luoping\product\11.2.0\client_1\pstore>dir
  9. 驱动器 D 中的卷是 DATA
  10. 卷的序列号是 D60C-09BD
  11. D:\app\luoping\product\11.2.0\client_1\pstore 的目录
  12. 2012/08/29 15:39 <DIR> .
  13. 2012/08/29 15:39 <DIR> ..
  14. 2012/08/29 15:39 3,589 cwallet.sso
  15. 2012/08/29 15:39 3,512 ewallet.p12
  16. 2 个文件 7,101 字节
  17. 2 个目录 368,717,893,632 可用字节

2,启动wallet与指定wallet位置

复制代码
  1. D:\app\luoping\product\11.2.0\client_1\network\admin>more sqlnet.ora
  2. sqlnet.ora Network Configuration File: D:\app\luoping\product\11.2.0\client_1\

  3. network\admin\sqlnet.ora
  4. Generated by Oracle configuration tools.

  5. This file is actually generated by netca. But if customers choose to

  6. install "Software Only", this file wont exist and without the native

  7. authentication, they will not be able to connect to the database on NT.

  8. SQLNET.AUTHENTICATION_SERVICES= (NTS)
  9. NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
  10. WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=D:\app\luoping\product\11.2.0\client_1\pstore)))
  11. SQLNET.WALLET_OVERRIDE=TRUE

3,增加需要登陆的网络服务名,用户,密码到wallet中

复制代码
  1. D:\app\luoping\product\11.2.0\client_1\BIN>mkstore -wrl D:\app\luoping\product\1
  2. 1.2.0\client_1\pstore -createCredential htzdg sys oracle
  3. Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
  4. 版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
  5. 输入 Wallet 口令:
  6. Create credential oracle.security.client.connect_string1

4,测试是否成功

复制代码
  1. D:\app\luoping\product\11.2.0\client_1\BIN>sqlplus /@htzdg as sysdba
  2. SQL*Plus: Release 11.2.0.1.0 Production on 星期三 8月 29 17:48:27 2012
  3. Copyright (c) 1982, 2010, Oracle. All rights reserved.
  4. 连接到:
  5. Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
  6. With the Partitioning, OLAP, Data Mining and Real Application Testing options
  7. SQL>

5,查看wallet中配置的网络服务名

复制代码
  1. D:\app\luoping\product\11.2.0\client_1\BIN>mkstore -wrl d:\app\luoping\product\1
  2. 1.2.0\client_1\pstore -listCredential
  3. Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
  4. 版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
  5. 输入 Wallet 口令:
  6. List credential (index: connect_string username)
  7. 1: htzdg sys

6,一个网络服务名,只能对应一个用户,如果相同的数据库有多少用户需要在同一个client通过wallet实现时,我们需要每一个用户,创建一个网络服务名。

下面是测试一个网络服务名,相增加两个用户时,报错。

复制代码
  1. C:\Users\luoping>mkstore -wrl D:\app\luoping\product\11.2.0\client_1\pstore -cre
  2. ateCredential htzdg scott oracle
  3. Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
  4. 版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
  5. 输入 Wallet 口令:
  6. Create credential 出现密钥存储错误: oracle.security.pki.OracleSecretStoreExcepti
  7. on: Credential already exists

7,当密码修改后,要手动更新wallet中相应的密码。不然要报错的。

复制代码
  1. D:\app\luoping\product\11.2.0\client_1\BIN>sqlplus /@htzdg as sysdba
  2. SQL*Plus: Release 11.2.0.1.0 Production on 星期三 8月 29 17:45:56 2012
  3. Copyright (c) 1982, 2010, Oracle. All rights reserved.
  4. 连接到:
  5. Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
  6. With the Partitioning, OLAP, Data Mining and Real Application Testing options
  7. SQL>
  8. SQL> alter user sys identified by htz;
  9. 用户已更改。
  10. SQL> exit
  11. 从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
  12. With the Partitioning, OLAP, Data Mining and Real Application Testing options 断
  13. D:\app\luoping\product\11.2.0\client_1\BIN>sqlplus /@htzdg as sysdba
  14. SQL*Plus: Release 11.2.0.1.0 Production on 星期三 8月 29 17:46:25 2012
  15. Copyright (c) 1982, 2010, Oracle. All rights reserved.
  16. ERROR:
  17. ORA-01017: invalid username/password; logon denied
  18. 请输入用户名:
  19. D:\app\luoping\product\11.2.0\client_1\BIN>mkstore -wrl D:\app\luoping\product\1
  20. 1.2.0\client_1\pstore -modifyCredential htzdg sys
  21. Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
  22. 版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
  23. 命令行中缺少您的密钥/口令
  24. 请输入您的密钥/口令:
  25. 请重新输入您的密钥/口令:
  26. 输入 Wallet 口令:
  27. Modify credential
  28. Modify 1
  29. D:\app\luoping\product\11.2.0\client_1\BIN>
  30. D:\app\luoping\product\11.2.0\client_1\BIN>mkstore -wrl D:\app\luoping\product\1
  31. 1.2.0\client_1\pstore -modifyCredential htzdg sys
  32. Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
  33. 版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
  34. 命令行中缺少您的密钥/口令
  35. 请输入您的密钥/口令:
  36. 请重新输入您的密钥/口令:
  37. 输入 Wallet 口令:
  38. Modify credential
  39. Modify 1
  40. D:\app\luoping\product\11.2.0\client_1\BIN>
  41. D:\app\luoping\product\11.2.0\client_1\BIN>sqlplus /@htzdg as sysdba
  42. SQL*Plus: Release 11.2.0.1.0 Production on 星期三 8月 29 17:48:27 2012
  43. Copyright (c) 1982, 2010, Oracle. All rights reserved.
  44. 连接到:
  45. Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
  46. With the Partitioning, OLAP, Data Mining and Real Application Testing options
  47. SQL>

8,手动删除wallet中的记录

复制代码
  1. D:\app\luoping\product\11.2.0\client_1\BIN>mkstore -wrl d:\app\luoping\product\1
  2. 1.2.0\client_1\pstore -deleteCredential htzdg
  3. Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
  4. 版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
  5. 输入 Wallet 口令:
  6. Delete credential
  7. Delete 1

9,mkstore命令帮忙手册

复制代码
  1. D:\app\luoping\product\11.2.0\client_1\BIN>mkstore
  2. Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
  3. 版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
  4. mkstore [-wrl wrl] [-create] [-createSSO] [-createLSSO] [-createALO] [-delete] [
  5. -deleteSSO] [-list] [-createEntry alias secret] [-viewEntry alias] [-modifyEntry
  6. alias secret] [-deleteEntry alias] [-createCredential connect_string username p
  7. assword] [-listCredential] [-modifyCredential connect_string username password]
  8. -deleteCredential connect_string\] \[-help\] \[-nologo

相关推荐
昭阳~19 分钟前
MySQL读写分离
数据库·mysql
龙泉寺天下行走1 小时前
Python 翻译词典小程序
python·oracle·小程序
jjkkzzzz3 小时前
Linux下的c/c++开发之操作Redis数据库
数据库·c++·redis
老华带你飞3 小时前
实习记录小程序|基于SSM+Vue的实习记录小程序设计与实现(源码+数据库+文档)
java·数据库·spring boot·小程序·论文·毕设·实习记录小程序
Elastic 中国社区官方博客4 小时前
Elasticsearch 索引副本数
大数据·数据库·elasticsearch·搜索引擎·全文检索
冬瓜的编程笔记5 小时前
【八股战神篇】MySQL高频面试题
数据库·mysql·面试
赵渝强老师5 小时前
【赵渝强老师】Memcached的路由算法
数据库·redis·nosql·memcached
belldeep5 小时前
groovy 如何遍历 postgresql 所有的用户表 ?
数据库·postgresql
2401_896008195 小时前
PostgreSQL
数据库·postgresql