oracle 登陆认证
Table of Contents
1 简介
Oracle登陆认证有两种方式,基于操做系统的登陆认证,基于oracle的密码验证。css
ORACLE数据库经过sqlnet.ora文件中的参数sqlnet.authentication_services,来控制用户是经过操做系统认证仍是经过密码认证进行登陆。html
而对于拥有sysdba角色的用户,还有一个密码文件能够辅助密码验证。java
sqlnet.authentication_services、参数remote_login_passwordfile和密码文件pwd<sid>.ora三者协同做用实现身份认证.python
2 authentication_services
Windows环境与Linux/Unix环境有区别:linux
- 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
以上写法都是无密本地登陆。sql
3.2 密码文件
密码文件是保存拥有sysdba/sysoper等role 的用户和密码信息的文件 。当拥有相关role的用户,想要登陆 数据库实例时,若是authentication_services 要求进行密码验证,那么这些用户的密码会经过密码文件加以校验。shell
建立密码文件的语法以下:数据库
orapwd file=<密码文件> password=<sys用户密码> entries=10 force=y
说明:sass
- file——密码文件名(必要)。默认在$Oracle_Home/dbs目录下
- password——SYS 的密码(必要)
- entries——DBA和操做员的最大数目(可选)
- force——是否重写现有的文件(可选)
- 建立密码文件时,= 号两边是没有空格的。
3.3 是否开启密码文件验证
Oracle提供了一个参数: remote_login_password=NONE|EXCLUSIVE|SHARED .ruby
- 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