一.测试环境
1.1数据库服务端:
操作系统:redhat linux 5.0
数据库版本:oracle 10g
实例名称:orcl
1.2客户端:
操作系统:windowsxp
数据库客户端:oracle10g客户端
二.服务端参数配置和准备
2.1首先是remote_os_authent参数
SQL> show parameter remote_os_authent;
NAME TYPE VALUE
------------------------------------ ----------- --------------
----------------
remote_os_authent boolean TRUE
SQL>
必须要值为TRUE,如果不是要用命令alter system set remote_os_authent=true scope=spfile;来修改,而且得重启数据库;因为这样才允许客户机来通过系统来认证连接。
2.2sqlnet.ora中SQLNET.AUTHENTICATION_SERVICES的值
因为SQLNET.AUTHENTICATION_SERVICES的值是用来对本地用户的系统方式
认证的条件的,而对客户端是没有任何影响的,所以这里不需要去设置这个值,
不管有没有这个参数,不管这个参数是多少,都不影响我们客户端连接。这个
我做过测试,确实是这样的,至于SQLNET.AUTHENTICATION_SERVICES这个值怎
么设置才可以让本地用户系统认证通过,网友可以自己去网上查询,有很多资料。
2.3注意参数os_authent_prefix的值,如果os_authent_prefix有值
,不为null,则创建用户时也要加上os_authent_prefix的前缀
SQL> show parameter os_authent_prefix;
NAME TYPE VALUE
------------------------------------ ----------- --------------
----------------
os_authent_prefix string ops$
SQL>
2.4在客户端确认查看操作系统用户名;
C:\Documents and Settings\jacky>set username
USERNAME=jacky
所以在oracle数据库里必须创建一个OPS$+系统用户名的数据库用户名。
2.5创建外部用户
SQL> create user ops$jacky identified by externally;
用户已创建。
SQL> grant dba to ops$jacky;
授权成功。
SQL> select username from dba_users where username='OPS$JACKY';
USERNAME
------------------------------
OPS$JACKY
SQL>
2.6然后在客户端以jacky用户登录系统,然后在sqlplus中登录尝试;
SQL> conn ;
已连接。
SQL> show user;
USER 为 "OPS$JACKY"
SQL> select * from user_role_privs;
USERNAME GRANTED_ROLE ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
OPS$JACKY DBA NO YES NO
SQL>
这样就完成了不需要密码就可以远程通过系统认证连接到数据了。
网友如果看完我的文章,觉得我有问题,可以提出来,大家共同探讨!
阅读(1946) | 评论(0) | 转发(0) |