• Oracle登录认证


    oracle 登录认证

    1 简介

    Oracle登录认证有两种方式,基于操作系统的登录认证,基于oracle的密码验证。

    ORACLE数据库通过sqlnet.ora文件中的参数sqlnet.authentication_services,来控制用户是通过操作系统认证还是通过密码认证进行登录。

    而对于拥有sysdba角色的用户,还有一个密码文件可以辅助密码验证。

    sqlnet.authentication_services、参数remote_login_passwordfile和密码文件pwd<sid>.ora三者协同作用实现身份认证.

    2 authentication_services

    Windows环境与Linux/Unix环境有区别:

    Windows
    • SQLNET.AUTHENTICATION_SERVICES= (NTS)是基于操作系统验证;
    • SQLNET.AUTHENTICATION_SERVICES= (NONE)是基于Oracle验证;
    • SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)是二者共存。
    • SQLNET.AUTHENTICATION_SERVICES必须设置为NTS或者ALL才能使用OS认证;不设置或者设置为其他任何值都不能使用OS认证。
    Linux/Unix
    在linux下,在SQLNET.AUTHENTICATION_SERVICES的值设置为
    • ALL, 为OS验证;
    • NONE或者NTS,都是基于oracle密码验证的。
    • 不设置时,启用OS认证和oracle密码认证。

    2.1 不同登录方式的写法

    区分以下几种登录方式的区别
    • conn / as sysdba 本机登陆,使用操作系统认证,有无监听都可以
    • conn sys/password as sysdba 本机登陆,使用密码文件认证,有无监听都可以
    • conn sys/password@dbanote as sysdba 兼容OS认证与密码认证。使用密码文件认证,必须有监听,必须有tnsnames.ora,remote_login_passwordfile必须是EXCLUSIVE

    3 sysdba角色登录认证

     

    3.1 无密本地登录

    sqlplus / as sysdba
    或者
    sqlplus / nolog
    conn / as sysdba
    

    以上写法都是无密本地登录。

    3.2 密码文件

    密码文件是保存拥有sysdba/sysoper等role 的用户和密码信息的文件 。当拥有相关role的用户,想要登录 数据库实例时,如果authentication_services 要求进行密码验证,那么这些用户的密码会通过密码文件加以校验。

    创建密码文件的语法如下:

    orapwd file=<密码文件> password=<sys用户密码> entries=10 force=y
    

    说明:

    • file——密码文件名(必要)。默认在$Oracle_Home/dbs目录下
    • password——SYS 的密码(必要)
    • entries——DBA和操作员的最大数目(可选)
    • force——是否重写现有的文件(可选)
    • 创建密码文件时,= 号两边是没有空格的。

    3.3 是否开启密码文件验证

    Oracle提供了一个参数: remote_login_password=NONE|EXCLUSIVE|SHARED .

    • NONE 高级管理员登录时,不使用密码文件验证
    • EXCLUSIVE 高级管理员登录时,使用密码文件验证,且只允许本实例使用该密码文件。
    • shared 高级管理员登录时,使用密码文件验证,且允许多个实例使用该密码文件

    3.4 限制sys登录方式

     

    3.4.1 不限制

    不设置sqlnet.authentication_services,不设置 remote_login_password. 此时,不管是无密登录 、密码登录还是远程登录都可以。

    3.4.2 只允许本地密码登录

    sqlnet.authentication_services=(ALL) 且 remote_login_password=exclusive 或者shared

    3.4.3 只允许远程登录

    sqlnet.authentication_services=(NTS) 且 remote_login_password=exclusive 或者shared

    Author: halberd.lee

    Created: 2019-08-31 Sat 20:42

    Validate

  • 相关阅读:
    C#获取当前堆栈的各调用方法列表
    JS | 你真的会用 console.log 吗?
    antd form表单自定义验证
    C# 如何去空格
    CSS 网络安全字体
    Surface Book 3真是太快了
    Waypoints
    es6 去掉空格_js去除字符串中的所有空格(包括前后,中间存在的所有空格)
    Facebook 新一代 React 状态管理库 Recoil
    独处时必看悬疑推理剧大全
  • 原文地址:https://www.cnblogs.com/halberd-lee/p/11389728.html
Copyright © 2020-2023  润新知