Oracle登录认证
oracle 登录认证
Table of Contents
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
Created: 2019-08-31 Sat 20:42
===================
天行健,君子以自强不息
地势坤,君子以厚德载物
===================