url:http://www.cnblogs.com/ivictor/p/4213823.html

Oracle对于普通账户和超级管理员(指sysdba和sysoper)的认证机制不一样,前者是通过数据字典,后者主要是通过操作系统验证和密码文件验证。因此一般提到操作系统认证或密码文件认证,针对的都是超级管理员的认证。

操作系统认证

对于操作系统认证,其实蛮简单的,只需要将该用户添加到dba(针对sysdba权限)或oper(针对sysoper权限)组中,就可以使用 "sqlplus  / as sysdba"方式登陆

在Linux环境下,可通过以下命令添加属组:usermod -g dba test  -->>test是用户名

能否使用操作系统身份认证,取决于$ORACLE_HOME/network/admin/sqlnet.ora中SQLNET.AUTHENTICATION_SERVICES的取值。

SQLNET.AUTHENTICATION_SERVICES = none | all | ntf(windows)

none : 表示关闭操作系统认证,只能密码认证。

all : 操作系统认证和密码认证均可。

nts : 用于windows平台。

当 SQLNET.AUTHENTICATION_SERVICES = none时,会报以下错误:

[oracle@node1 admin]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Fri Jan 9 23:14:18 2015
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied

若用密码登陆则没有问题

[oracle@node1 admin]$ sqlplus sys/oracle as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Fri Jan 9 23:17:31 2015
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options SQL> 

密码文件认证

这种方式在实际环境中较为普遍,利用的是orapwd工具创建密码文件。

在密码文件认证中,有一个参数十分重要:remote_login_passwordfile,该参数有三个值,默认为exclusive

none----不使用密码文件认证
exclusive---需要密码文件认证 自己独占使用
shared ---需要密码文件认证 不同实例dba用户可以共享密码文件

密码文件的默认位置为:$ORACLE_HOME/dbs

密码文件的查找顺序:orapw<sid> -->  orapw  --> Failure

所以在创建密码文件时filename只能为orapw<sid>或者orapw

外部认证(External Authentication)

若对用户采用外部认证,则只有用户的账号由Oracle管理,密码和用户登录的认证则通过外部服务来管理。外部认证常见的有操作系统认证和网络认证。

外部认证之操作系统身份验证

此技术使用与操作系统用户同样的名称创建Oracle用户,但前面加上了os_authent_prefix参数指定的字符串,默认为ops$,下面我们来看看官档对该参数的说明:

OS_AUTHENT_PREFIX specifies a prefix that Oracle uses to authenticate users attempting to connect to the server. Oracle concatenates the value of this parameter to the beginning of the user's operating system account name. When a connection request is attempted, Oracle compares the prefixed username with Oracle usernames in the database.

The default value of this parameter is OPS$ for backward compatibility with previous versions. However, you might prefer to set the prefix value to "" (a null string), thereby eliminating the addition of any prefix to operating system account names.

可见,用ops$只是为了向前兼容。

下面,我们来实验一下。

一、创建操作系统用户

[root@node1 ~]# useradd test

二、创建Oracle用户并授予相应的权限

SQL> create user ops$test identified externally;

SQL> grant create session to ops$test;

三、用test用户登录数据库

[test@node1 ~]$ /u01/app/oracle/product/11.2.0.4/db_1/bin/sqlplus /
Error 6 initializing SQL*Plus
SP2-0667: Message file sp1<lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

报以上错误,根据提示,我们为ORACLE_HOME设置相应的值

在/home/test/.bash_profile中添加如下值:

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/db_1

重新用test用户登录数据库

[test@node1 ~]$ /u01/app/oracle/product/11.2.0.4/db_1/bin/sqlplus /
SQL*Plus: Release 11.2.0.4.0 Production on Sat Jan 10 01:14:53 2015
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
ERROR:
ORA-12162: TNS:net service name is incorrectly specified
Enter user-name: 

又报TNS:net service name is incorrectly specified错误。

怀疑没有指定相应的SID,在/home/test/.bash_profile中添加如下值:

export ORACLE_SID=orcl

重新用test用户登录

[test@node1 ~]$ /u01/app/oracle/product/11.2.0.4/db_1/bin/sqlplus /
SQL*Plus: Release 11.2.0.4.0 Production on Sat Jan 10 01:18:22 2015
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
SQL> show user
USER is "OPS$TEST"

终于成功登录!

这个是在本地环境下的操作系统认证,即test与oracle数据库在同一个主机上。

倘若不在同一个主机上,必须将remote_os_authent设置为TRUE。

外部认证之网络认证

Network authentication is performed using Oracle Advanced Security, which can be configured to use a third-party service such as Kerberos. If you are using Oracle Advanced Security as your only external authentication service, then the REMOTE_OS_AUTHENT parameter setting is irrelevant, becauseOracle Advanced Security only allows secure connections.

关于外部认证,我们来看看官方文档的说明

1> More choices of authentication mechanism are available, such as smart cards, fingerprints, Kerberos, or the operating system.
2> Many network authentication services, such as Kerberos support single sign-on, enabling users to have fewer passwords to remember.
3> If you are already using some external mechanism for authentication, such as one of those listed earlier, then there may be less administrative overhead to use that mechanism with the database as well.

Easy Connect

[oracle@node3 ~]$ sqlplus system/oracle@192.168.2.12:1521/sz.being.com

其中,192.168.2.12是数据库所在主机的IP,1521是数据库所在主机的监听端口,sz.being.com是数据库提供的服务名

总结:

1> 操作系统认证优先于密码文件认证。譬如在oracle用户下,我用sqlplus 123/456 as sysdba也可登录到数据库中,即便123不是数据库用户。

2> 与Oracle数据库在同一主机上的用户,只需要知道用户和密码即可登录数据库,譬如在test1用户下,执行sqlplus scott/tiger和sqlplus sys/oracle as sysdba均可登录到数据库,前者是通过数据字典进行验证,后者通过密码文件进行验证。

参考文档:

1. Database Administrator Authentication

2. Administering Authentication

oracle用户登录的3种认证方式相关推荐

  1. vsftp账号_关于VsFtp用户登录的几种认证方式

    多种用户认证方式配置 第一种:通过系统用户访问 VsFtp在默认情况下允许系统账户(/etc/passwd)使用,使用系统账户登录存在很大的安全问题. 下面两种方法可以一定程度上提高安全性: 1:如只 ...

  2. 魔方APP项目-06-用户注册,完成短信验证码的校验、基于Celery实现短信异步发送、用户登录,jwt登陆认证、服务端提供用户登录的API接口

    一.用户注册- 1.完成短信验证码的校验 application.utils.language.message,代码: class ErrorMessage():ok = "ok" ...

  3. 简单谈谈OAuth 2.0的四种认证方式

    简单谈谈OAuth 2.0的四种认证方式 一.基本认识 1.1 OAuth认证中的四种角色 二.认证方式 2.1 授权码认证 2.2 简化认证 2.3 密码认证 2.4 客户端认证 一.基本认识 在小 ...

  4. Centos 6.8安装open***.三种认证方式

    Centos X64 6.8下安装Open***,三种认证方式 环境说明: 主机名称:open***01 安装版本为open***-2.3.11-1.el6.x86_64 相关资源下载连接如下: 链接 ...

  5. 【Http认证】Http的四种认证方式

    一.Http Basic Authentication 基本认证 将认证的信息填写到请求头,参考博客文章: 二.Http Digest Authentication Digest认证 以上这两种认证方 ...

  6. Linux以oracle用户登录,Linux_oracle 10G for linux常用命令,首先以Oracle用户登录1、 - phpStudy...

    oracle 10G for linux常用命令 首先以Oracle用户登录 1. $/oracle/oracle/app/product/101/bin/dbstart:启动数据库. 2. $/or ...

  7. oracle分页的三种方式,oracle 使用rownum的三种分页方式

    rownum是Oracle数据库中的一个特有关键字,返回的是一个数字代表记录的行号. 基础知识:rownum只能做 获取51到100的数据 三种分页的写法: 1.使用minus,原理就是查询出前100 ...

  8. 微信公众号与用户互动的8种交流方式

    说到微信公众号是现在大家在熟悉不过的了,每个人都会关注那么几个公众号,而现在公众号不管是企业.机构.个人都在运用的一个平台,企业用来传播自己的品牌以及产品的营销,机构.个人注册公众号也是这样一个理,在 ...

  9. oracle用户登录的认证方式

    1.操作系统认证 对于操作系统认证,其实蛮简单的, 只需要将该用户添加到dba(针对sysdba权限)或oper(针对sysoper权限)组中, 就可以使用 "sqlplus / as sy ...

最新文章

  1. 计算机组成原理——知识结构体系
  2. 赠书 | 人工智能变“人工智障”?关于因果关系的新科学
  3. 算法与数据结构(面向对象思想)
  4. 有趣又好玩的glm库
  5. 【spring-session】错误:No bean named 'springSessionRepositoryFilter' available
  6. springMVC3学习(十一)--文件上传CommonsMultipartFile
  7. 检查点(Checkpoint)过程如何处理未提交的事务
  8. 单链表删除指定范围内的元素
  9. javascript 计算每行中的列数
  10. 新工作 Day15 周四
  11. 蓝桥杯真题 日期问题 c++代码实现 小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在 1960 年 1 月 1 日至 2059 年 12 月 31 日。
  12. 安装nodejs遇到的坑
  13. ONOS架构中的YANG、P4 Runtime
  14. Alpha Fold 2
  15. Docker系列之五:Docker 三剑客之 Docker Swarm
  16. Python学习之道-串口Modbus开发
  17. mysql怎样发给别人_怎么把数据库发给别人
  18. 第一次考CSP(第27次CCF计算机软件能力认证)
  19. 利用Lync Online与MSN联系人沟通
  20. RFID动物耳标识读器在科学养猪中的应用

热门文章

  1. SD卡格式化后照片如何恢复?
  2. seresnet50训练自己的数据集_SSD框架训练自己的数据集
  3. golang logrus日志框架
  4. 2018免费的隐私保护工具
  5. 文本生成(二)【NLP论文复现】Relative position representations 相对位置编码突破Bert的文本长度限制!
  6. mysql触发器任务
  7. 电子招标采购系统:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展
  8. css-loader 版本号,css loader安装问题
  9. 生于忧患而死于安乐也
  10. 制作三星I9088 刷机ROM的实践(二)