一。什么是oracle操作系统用户认证登录方式. 即只要在数据库中创建一个os认证用户。然后,就可以在服务器本机或远程客户端上 创建和登录一个相同用户名,就可以不需要密码连接上本地或远程的数据库了。 最典型的就是“sql / as sysdba”即不用给出用户名和密
一。什么是oracle操作系统用户认证登录方式.
即只要在数据库中创建一个os认证用户。然后,就可以在服务器本机或远程客户端上
创建和登录一个相同用户名,就可以不需要密码连接上本地或远程的数据库了。
最典型的就是“sql / as sysdba”即不用给出用户名和密码就可以登录到数据库系统中。
二。如何用os用户认证,在本机或远程登录数据库。
1.检查是否已打开了操作系统认证
$oracle_home/network/admin/sqlnet.ora
windows下检查是否设为nts.这个nts为oracle针对windows专用的。
sqlnet.authentication_services= (nts)
unix/linux下,检查是否设为none,如果是,则要更改成all或注释掉那行。
2.检查密码文件参数是否为exclusive
show parameter remote_login_passwordfile
如不是,可以下面命令更改:
alter system set remote_login_passwordfile=exclusive scope=spfile;
并且检查密码文件是否有创建,如没有,用下列命令创建并输入sys用户的密码。
orapwd file=orapw$oracle_sid passwd=xcl entries=5 force=y;
可用下面命令来检查sys用户是否有放入密码文件。
select * from v$pwfile_users;
附上参数remote_login_passwordfile的参数值说明:
none: 使得oracle不使用密码文件,只能使用os认证,不允许通过不安全网络进行远程管理。
exclusive: 可以使用唯一的密码文件,但只限一个数据库。密码文件中可以包括除了sys用户的其他用户。
shared: 可以在多个数据库上使用共享的密码文件。但是密码文件中只能包含sys用户。通常用于一个dba管理多个数据库的时候。
3.检查远程操作系统认证参数是否为true
show parameter remote_os_authent
如不是,可以下面命令更改:
alter system set remote_os_authent=true scope=spfile;
4. 现有的os认证关键字与认证用户
--查看当前数据库os认证关键字,常为 ops$
show parameter os_authent_prefix
--查看现在有无os认证用户
select username,password from dba_users where username like 'ops$%';
也可用 alter system set os_authent_prefix= scope=spfile; 去掉前缀
5. 如有更改过参数,请重启数据库,使参数更改生效。否则略过.
shutdown immediate
startup
6. 在数据库创建一个os认证用户
a. 在数据库服务上,创建一个myosuser操作系统用户.
useradd myosuser
passwd myosuser
b.在数据库中创建,记得用户名前要加前缀
-- identified externally 表明此用户通过操作系统来认证
create user ops$myosuser identified externally;
grant connect,resource to ops$myosuser;
你也可以将myosuser改成administrator,这样windows客户端连远程数据库时,更明显,更方便。
另一个要注意的地方是os认证优先于密码文件认证.
7.数据库服务器上,用其本机os用户登录测试
export oracle_sid=xcldb
export oracle_home=/u01/app/oracle/product/11.2.0/db_1
su - myosuser
/u01/app/oracle/product/11.2.0/db_1/bin/sqlplus /
show user
注意: myosuser用户要属于dba组角色。
8. 在远程客户端机器连接服务器上的数据库
在客户端机器上,用myosuser用户登录远程数据库.
windows为例:
a. 创建一个myosuser用户
b. 授权ora_dba或ora_oper角色
c. 检查sqlnet.ora是否为sqlnet.authentication_services= (nts)
d. 输入sqlplus /@remote_xcldb 就可以登录
当然如果是用administrator用户测试,就没这么麻烦。
三。禁用远程操作系统认证
a.alter system set remote_os_authent=false scope=spfile;
b.重启数据库
四。如何禁用os认证用户登录
在$oracle_home/network/admin/sqlnet.ora 加上下面的语句设为none即可。
sqlnet.authentication_services=(none)
windows和unix/linux都这样做。
五。给sqlnet.ora文件提高安全等级
chown root:root sqlnet.ora
chmod 744 sqlnet.ora
这样,以后只有root用户可以更改里面的值了.
简洁流程:
远程客户端发起连接 --> 检查库是否可远程连接(remote_os_authent = true)
--> 检查是否可使用密码文件(remote_login_passwordfile = exclusive) --> 检查密码文件
--> 检查 sqlnet.ora可否用os认证用户 ( authentication_services != none)
--> 检查os认证用户名是否存在 --> 核对密码 -->登录成功.
mail: xcl_168@aliyun.com
blog: http://blog.csdn.net/xcl168