oracle用户认证机制包括,oracle的认证机制

Oracle数据库究竟使用OS认证还是口令文件认证来进行管理取决于下面三个因素:

1.SQLNET.ORA参数文件中的参数SQLNET.AUTHENTICATION_SERVICES设置

2.PFILE(SPFILE)参数文件中的参数REMOTE_LOGIN_PASSWORDFILE设置

3.口令文件orapw$SID(Linux) | PWD$SID.ora(Windows)

Oracle权限认证的基本顺序是这样的,先由SQLNET.AUTHENTICATION_SERVICES的设置值来决定是使用OS认证还是口令文件认证,

如果使用口令文件认证的话就要看后面两个条件了:

如果REMOTE_LOGIN_PASSWORDFILE参数设置为非NONE,而且口令文件存在的话就能正常使用口令文件认证,否则将会失败。

SQLNET.AUTHENTICATION_SERVICES参数

在SQLNET.ORA(位于$ORACLE_HOME/network/admin目录中)文件中,需要修改时直接用文本编辑器打开修改就行了,

对于不同的操作系统SQLNET.AUTHENTICATION_SERVICES的取值会有些不一样,通常我们会用到下面的一些设置值:

linux下 none  all nts 不设置 四种情况

启动监听 lsnrctl start 用于网络连接 走密码文件

将sys的密码设置成a

orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=a force=y

linux平台测试

第一种默认情况  没设置或者设置成BEQ

[oracle@dba admin]$ grep -v '#' sqlnet.ora

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

[oracle@dba admin]$

$ sqlplus as sysdba

可以登录

$ sql / as sysdba

可以登录

结论: 没设置或值为BEQ时 密码认证和OS认证都启用

第二种情况 设置成none

[oracle@dba admin]$ grep -v '#' sqlnet.ora

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

SQLNET.AUTHENTICATION_SERVICES=(none)

[oracle@dba admin]$

[oracle@dba admin]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Apr 30 04:35:02 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> conn / as sysdba

ERROR:

ORA-01031: 权限不足

SQL> conn sys/a as sysdba

Connected.

SQL>

SQL> conn as sysdba

Connected.

SQL>

结论: (none) OS认证被屏蔽 必须走密码文件认证

第三种情况 设置成all

SQL> conn / as sysdba

Connected.

SQL> conn as sysdba

ERROR:

ORA-12641: Authentication service failed to initialize

Warning: You are no longer connected to ORACLE.

SQL>

结论: all 密码文件认证被屏蔽 只能OS认证

第四种情况 设置nts

[oracle@dba admin]$ grep -v '#' sqlnet.ora

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

SQLNET.AUTHENTICATION_SERVICES=(nts)

[oracle@dba admin]$

SQL> conn / as sysdba

ERROR:

ORA-01031: 权限不足

SQL> conn sys/a as sysdba

Connected.

SQL> conn as sysdba

Connected.

SQL>

结论: nts只能密码文件认证

windows平台测试

第一种 默认情况 设置nts

SQL> conn / as sysdba

已连接。

SQL> alter user sys identified by a;

用户已更改。

SQL> conn / as sysdba

已连接。

SQL> conn sys/a as sysdba

已连接。

SQL> conn as sysdba

已连接。

SQL>

结论: 设置nts(和linux不一致) 密码和OS认证都启用

第二种 设置成none

SQL> conn / as sysdba

ERROR:

ORA-01031: insufficient privileges

SQL> conn sys/a as sysdba

已连接。

SQL> conn as sysdba

已连接。

SQL>

结论: 设置成none(和linux一致) 只能密码认证 OS认证被屏蔽

第三种 设置成 all

SQL> conn / as sysdba

ERROR:

ORA-12641: 验证服务无法初始化

SQL> conn sys/a as sysdba

ERROR:

ORA-12641: 验证服务无法初始化

SQL> conn as sysdba

ERROR:

ORA-12641: 验证服务无法初始化

结论: 此参数在windows下 OS和密码认证都屏蔽了

第四种 不设置

SQL> conn / as sysdba

ERROR:

ORA-01031: insufficient privileges

SQL> conn sys/a as sysdba

已连接。

SQL> conn as sysdba

已连接。

SQL>

结论:只允许密码认证 OS认证被屏蔽

第五种 设置成beq

SQL> conn / as sysdba

ERROR:

ORA-01031: insufficient privileges

警告: 您不再连接到 ORACLE。

SQL> conn sys/a as sysdba

已连接。

SQL> conn as sysdba

已连接。

SQL>

结论:只能使用密码认证 OS认证被屏蔽

REMOTE_LOGIN_PASSWORDFILE参数

此系统参数的设置制定了数据库使用口令文件的方法,此参数可以设置的值有三个:

REMOTE_LOGIN_PASSWORDFILE = NONE

不使用口令文件

REMOTE_LOGIN_PASSWORDFILE = EXCLUSIVE

使用口令文件,但只有一个数据库实例可用使用

REMOTE_LOGIN_PASSWORDFILE = SHARED

多个数据库实例共用一个口令文件,这种设置下是不能增加其他数据库用户作为特殊权限用户到口令文件中的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值