java 验证tns name_ORACLE登录验证方式的详解

Oracle的3种认证方式

1.使用OS操作系统集成身份验证在数据库服务器本机只要以sqlplus as sysdba连接数据库,不论输入什么用户(哪怕这个用户如aaa在数据库中根本不存在)都可以连接上,并且连接用户是sys

好处就是,如果有时候忘记了数据库用户的密码,而又想登录数据库,可以通过这种方式,前提是在数据库服务器本机上;但是方便的同时也带来了一些安全隐患,想屏蔽os认证,只要修改sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES的值就可以屏蔽OS功能

没有sqlnet.ora文件时,默认开启OS认证

SQLNET.AUTHENTICATION_SERVICES = none | all | nts(windows下表示启用OS认证)

all : 用于linux、unix、windows平台,启用OS认证

nts : 用于windows平台,启用OS认证,其他平台使用这个值表示关闭OS认证

none : 表示关闭OS认证,只能密码认证或其他认证

all: all for all authentication methods.

nts: nts for Microsoft Windows native operating system authentication

none: none for no authentication methods, including Microsoft Windows native operating system authentication. When SQLNET.AUTHENTICATION_SERVICES is set to none, a valid user name and password can be used to access the database.

总结

SQLNET有AUTHENTICATION_SERVICES:如果后面有=,但是值不是all,表示关闭OS认证,只能密码认证或其他认证(特殊一点,如果是nts则仅在windows才表示开启OS认证,其他平台都是关闭OS认证)

如果后面没有=,表示忽略AUTHENTICATION_SERVICES,即和下面SQLNET没有AUTHENTICATION_SERVICES一样

SQLNET没有AUTHENTICATION_SERVICES:

表示默认开启OS认证

2.使用密码文件进行身份认证

Oracle中的密码文件存放着具有sysdba, sysoper权限的用户名及口令。在数据库没有启动之前,数据库的内建用户是无法通过数据库本身来验证身份的。使用密码文件的好处是即使数据库不处于open状态,依然可以通过密码文件验证来连接数据库,在数据库未启动之前登陆从而启动数据库(典型的使用场景duplicate)。如果没有密码文件,在数据库未启动之前就只能通过操作系统认证.

远程异机用户不能使用OS登录,只能基于密码文件的验证,如果想以sysdba权限远程连接数据库,必须使用密码文件,否则不能连上!开始安装完oracle,没有给普通用户授予sysdba权限,密码文件中只存放了sys的口令,如果把sysdba权限授予了普通用户,那么此时会把普通用户的口令从数据库中读到密码文件中保存下来,当然这时必须要求数据库处于open状态。

到底有几个用户被授予了sysdba或者sysoper权限,可以通过查询如下v$pwfile_users获得,v$pwfile_users的信息就是源于密码文件的(This view lists users who have been granted SYSDBA and SYSOPER privileges as derived from the password file.)

到底可以有几个用户被授予sysdba或者sysoper权限,是由创建密码文件时指定的entries数决定的

orapwd file='$ORACLE_HOME/dbs/orapwSID' password=123456 entries=5 force=y

当然sql>alter user sys identified by XX时,密码文件也自动被修改了即linux下ll命令时看到密码文件的修改时间会变

REMOTE_LOGIN_PASSWORDFILE specifies whether Oracle checks for a password file.

Values:

■ shared

One or more databases can use the password file. The password file can contain

SYS as well as non-SYS users.

■ exclusive

The password file can be used by only one database. The password file can contain

SYS as well as non-SYS users.This is the Default value

■ none

Oracle ignores any password file. Therefore, privileged users must be

authenticated by the operating system.

sqlplus sys/正确密码 as sysdba(可能使用了OS认证也可能使用了密码文件认证,如果不能OS认证,就是数据库服务器本地使用密码文件认证)

sqlplus sys/正确密码@tns_name as sysdba(只能使用密码文件认证)

3.口令身份验证

sqlplus username/password[@db_alias]

CONNECT username/password[@db_alias]

这是 Oracle 一般用户使用得最多的一种身份验证方式。在使用口令身份验证进行连接时,实例将针对在数据字典中的用户账户存储的口令。验证给定的口令。为此,数据库必须处于OPEN状态;从逻辑上讲,在使用口令身份验证连接时,不可能发出 STARTUP 命令或者 SHUTDOWN 命令。不允许 SYS 用户以口令身份验证的方式进行连接,SYS 只能使用密码文件、操作系统身份验证。

1.linux环境下,没有配置SQLNET.AUTHENTICATION_SERVICES时,默认OS验证和密码文件验证并存的实验场景

1.1不删除密码文件场景

如下是使用的是OS验证

sqlplus / as sysdba正常

sqlplus test/XX as sysdba正常(XX是正确密码或错误密码都可以的)

sqlplus system/XX as sysdba正常(XX是正确密码或错误密码都可以的)

sqlplus sys/XX as sysdba正常(XX是正确密码或错误密码都可以的)

如下是使用的密码文件验证(数据库服务器本机操作,tnsname是数据库服务器本机的tns名称)

sqlplus test/正确密码@tnsname as sysdba不正常

sqlplus system/正确密码@tnsname as sysdba不正常

sqlplus sys/正确密码@tnsname as sysdba正常

sys的实际密码和和密码文件里的密码不一致的实验

sqlplus sys/错误密码@tnsname as sysdba不正常

1.2删除密码文件场景

如下是使用的是OS验证

sqlplus / as sysdba正常

sqlplus test/XX as sysdba正常(XX是正确密码或错误密码都可以的)

sqlplus system/XX as sysdba正常(XX是正确密码或错误密码都可以的)

sqlplus sys/XX as sysdba正常(XX是正确密码或错误密码都可以的)

如下是使用的密码文件验证(数据库服务器本机操作,tnsname是数据库服务器本机的tns名称)

sqlplus test/正确密码@tnsname as sysdba不正常

sqlplus system/正确密码@tnsname as sysdba不正常

sqlplus sys/正确密码@tnsname as sysdba不正常

sys的实际密码和和密码文件里的密码不一致的实验

sqlplus sys/错误密码@tnsname as sysdba不正常

2.linux环境下,配置SQLNET.AUTHENTICATION_SERVICES,且值配置为NTS时的实验场景,表示不能使用OS认证(linux下配置为ALL才能使用OS认证)

sqlplus / as sysdba不正常

sqlplus test/XX as sysdba不正常(XX是正确密码或错误密码都不可以的)

sqlplus system/XX as sysdba不正常(XX是正确密码或错误密码都不可以的

sqlplus sys/错误密码 as sysdba 不正常

sqlplus sys/正确密码 as sysdba 正常(说明使用了本地的密码文件验证)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值