Oracle OS认证与口令文件认证详解
Oracle的操作系统身份认证
非oracle安装用户本机sqlplus “sys/change_on_install as sysdba”能登录
非oracle安装用户远程sqlplus “/ as sysdba_on_install@sid as sysdba”能登录
os认证:如果启用了os认证,以sysdba登录,那么我们只要用oracle软件的安装用户就能登录:sqlplus “/ as sysdba”。如果我们要禁用os认证,只利用密码文件登录,我们首先要有一个密码文件:
orapwd file=C:\oracle\product\10.2.0\db_1\database\PWDoralocal.ora password=maximo entries=10;
设置初始化参数 REMOTE_LOGIN_PASSWORDFILE :
在 Oracle 数据库实例的初始化参数文件中,此参数控制着密码文件的使用及其状态。它可以有以下几个选项:
1、NONE :指示 Oracle 系统不使用密码文件,特权用户的登录通过操作系统进行身份验证;
2、EXCLUSIVE :指示只有一个数据库实例可以使用此密码文件。只有在此设置下的密码文件可以包含有除 SYS 以外的用户信息,即允许将系统权限 SYSOPER /SYSDBA 授予除 SYS 以外的其他用户。此设置oracle 9i中为缺省值。有朋友说是shared,其实不然.
(3)REMOTE_LOGIN_NTICATION_SERVICES= (NTS):
oracle安装用户本地sqlplus “/ as sysdba”能登录
非oracle安装用户本机sqlplus “sys/change_on_install as sysdba”无法登录
Oracle 身份验证方式
Oracle 身份验证方式Oracle 身份验证方式有如下几种:•操作系统身份验证•口令文件验证•口令身份验证•外部身份验证•全局身份验证前两项技术仅供管理员使用,最后一项技术要求使用LDAP 目录服务器。
LDAP 目录服务器是Oracle Internet Directory(OID),作为Oracle 应用服务器的一部分发布。
1. 操作系统和口令文件身份验证要为账户启用操作系统和口令身份验证(二者是相配的),必须为用户授予SYSDBA 或者SYSOPER 权限:GRANT [ sysdba | sysoper ] TO username ;如果向用户授予这些权限之一或者所有权限,则会将用户口令从数据字典复制到外部口令文件中,此时,即使数据库未处于打开状态,实例也可以读取口令。
要使用口令文件身份验证,用户可以在使用SQL*Plus 时通过以下语法连接:CONNECT username / password [ @db_alias ] AS [ SYSOPER | SYSDBA ] ;注意,可使用口令文件身份验证,通过Oracle Net 连接到远程数据库。
要使用操作系统身份验证,用户必须被确认为有权限访问Oracle 二进制文件的操作系统用户之后,且在使用SQL*Plus 时通过以下语法连接之前首先登陆到数据库服务器:CONNECT / AS [ SYSOPER | SYSDBA ] ;与SYSDBA 和SYSOPER 以同一种方式运行的第三种权限是SYSSAM,此权限仅适用于ASM 实例。
2. 口令身份验证在使用SQL*Plus 时,通过口令身份验证进行连接的语法如下:CONNECT username / password [ @db_alias ]这是Oracle 一般用户使用得最多的一种身份验证方式。
在使用口令身份验证进行连接时,实例将针对在数据字典中的用户账户存储的口令。
验证给定的口令。
oracle认证类型
Oracle认证可以分为以下几种类型:
1. 操作系统认证:一些操作系统允许Oracle使用它们的用户信息进行认证,通过操作系统认证的用户就可以通过Oracle的身份认证,连接到Oracle数据库。
2. Oracle数据库身份认证:使用存储在数据库中的信息对链接的用户进行身份认证。
在创建用户时,需要指定对应的密码,已加密的格式将口令存储在数据字典中,其他用户无权查看,但是可以随时修改自己的口令。
连接中的口令加密:网络连接中,口令通过DES,3DES 加密,加密在网络连接中完成。
3. DBA身份认证:主要操作操作系统认证与口令文件认证。
操作系统认证:创建用户组,授予用户组DBA权限,将DBA用户添加到该组中。
4. OCP认证:认证需要四项较为严格的评估,以证明受试者在Oracle 数据库管理领域的熟练程度,以及是否具备专家级的技术知识和技能。
通过考试后,个人可以管理大型数据库并开发可在整个企业中部署的功能强大的应用程序。
要通过OCP认证,学员必须有参加Oracle 大学授权培训中心的课程的经历。
5. OCA认证:这一较低级别的认证是Oracle为初级学员设计的初始技能水平考试,是使用Oracle产品的基础。
要获得OCA证书,必须通过证书要求的两个考试。
第一门测试可以通过互联网进行,第二场测试必须在Prometric授权的国际测试中心进行。
Oracle认证
Oracle认证是由Oracle公司,为能够满足对Oracle核心人士需求。
Oracle公司颁布并实施的一项权威品的服务与支持,并具有娴熟的专业技术标准,它是专为认证那操作能力与广泛理论知识的专业人。
各个层次OCA、OCP、OCM.OCP即Oracle Certified Professional据库管理方向的DBA、数据库开发Oracle Certified Associate。
简介ORACLE认证专家计划(OCP)帮助您在竞争激烈的市场中脱颖而出。
通过对ORACLE产品的熟练应用,您将获得业界普遍的认可。
与职务相关的认证,说明您是一个合格的技术人员。
作为ORACLE认证专家,您将具有对业界最具挑战性的机遇更深的洞察力,并获取更多的收获。
课程安排:SQL and PL/SQLOracle8i Enterprise DBA part I A: Architecture & AdministrationOracle8i Enterprise DBA part II B: Backup and RecoveryOracle8i Enterprise DBA part III: Performance TuningOracle8i Enterprise DBA part III: Network Administrator该计划可使学员通过系统、连续、短暂而又便利的课堂培训,配以相应的教学软件,经过预备课练习和模拟试题测试,最终得以通过认证考试,取得专业资格证书。
OCP (Oracle Certified Professional)是由Oracle公司颁布并实施的一项权威的专业技术标准,它是专为认证那些能够满足对ORACLE核心产品的服务与支持,并具有娴熟的操作能力与广泛理论知识的专业人士。
获得OCP认证的专业人士是业界薪水最高的IT专业人才Oracle证书oracle证书上分为三类:OCA证书、OCP证书、OCM证书oracle等级证书(3张)Oracle认证介绍1.Oracle专业DBA认证:这是为Oracle数据库管理设计的一门基本认证(4门考试)2.Oracle网络应用开发人员认证:这是关于SQ、P/SQL和网络开发的一门认证(4门考试)3.Oracle Java开发人员认证:这是与Sun公司一起为Oracle设计的Java开发人员认证,共有6门考试以及Sun和Oracle的衔接认证4. Oracle 数据库开发认证:这是ATA公司为Oracle开发人员提供的一门认证[2]DBA认证Oracle OCP DBA认证是所有Oracle认证中最普及的一种认证,本来,Oracle认证是专为专业人士设计的,想要参加考试的人员必须要具有DBA 4年以上工作经验的书面证明材料才有资格参加考试,但是,随着对Oracle专业人才需求的迅猛增长,Oracle放松了对这项认证要求,在Oracle9I中,Oracle提供了3级认证。
详细讲解Oracle数据库管理员认证方法
Oracle管理员认证方法1、管理员的权限:SYSDBA: 默认schema 为SYSSYSOPER: 默认schema 为 PUBLIC这两种权限允许用户在数据库没有打开的时候就可以登陆数据库,所以这种权限的控制权在数据库之外。
通常这种权限也可以被看做一种允许你对数据库进行某种操作的连接,比如CONNECT / AS SYSDBA2、两种管理员权限认证方法(1) Operating system (OS) authentication :操作系统认证--以下情况使用该方法:管理远程数据库时,具有安全的网络连接(secure connection)。
管理本地数据库时,想使用OS认证。
--操作步骤:a.建立一个os系统用户b.将这个用户加入到OSDBA或者OSOPER的OS组。
c.设置参数REMOTE_LOGIN_PASSWORDFILE=NONEd.CONNECT / AS SYSDBA--关于OSDBA和OSOPER组OSDBA对应: UNIX为dba; WINDOWS为ORA_DBAOSOPER对应:UNIX为oper; WINDOWS为ORA_OPER这些用户组在安装数据库的时候手工或者自动创建,这些组的成员以 as sysdba/sysoper 连接数据库后,自动授予sysdba/sysoper的管理权限。
(2) Password files :密码文件认证--以下情况使用该方法:管理远程数据库时,没有安全的网络连接(secure connection),比如TCP/IP和DECnet协议。
管理本地数据库时,不想使用OS认证。
--操作步骤:a.使用ORAPWD创建密码文件(其中的password选项是为SYS用户设置的)b.设置参数REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVEc.使用sys用户登陆d.在数据库中创建用户 create user donny1 identified by donny1;e. 赋予其SYSDBA/SYSOPER权限grant sysdba to donny1; 这样就将用户和密码加入到密码文件中。
oracle安全认证(6)
如果REMOTE_LOGIN_PASSWORDFILE=none 且 SQLNET.AUTHENTICATION_SERVICES= none 这个时候数据库是无法登录的。
• 若Sqlnet.authentication_services=nts • remote_login_passwordfile=exclusive
口令文件中存放sysdba/sysoper用户的用户名及 口令,允许用户通过口令文件验证,在数据库未 启动之前登陆,从而启动数据库。 • 口令文件在数据库之外 如果没有口令文件,在数据库未启动之前就只能 通过操作系统认证.
Remote_login_password为静态参数,不能scope=both,只能修改文件,重新 启动可以设置
注意: 1、file 是指口令文件的包含路径的名称 2、password 口令是 sys的口令 该口令的设置会把数据库用户sys的口令也进行了修改, 如果在数据库中使用 alter user sys identified by 新口令,则口令文件中的口令都会更改。 3、数量参数指的是允许sysdba和sysoper系统权限的用户个数 注意: 创建完成 后一定要重新启动数据库,否则不起作用
1、操作系统用户被允许以数据库管理员的权 限注册到数据库中。 例如:windows下 安装了oracle ,就会出现ora_dba组
该组中的用户可以无需口令地以oracle 管理员的权限注册到 oracle
没有使用用户名和口令,以系统管理员sysdba的身份进行了数据库的启动
2、如果不允许操作系统认证,且数据库为关 闭状态,要想启动数据库,要利用数据库 外的文件,口令文件。
可以通过该工具给windows增加ora_dba组
ORACLE口令管理
ORACLE⼝令管理⼝令⽂件介绍在ORALCE数据库系统中,⽤户如果要以特权⽤户⾝份(SYS/SYSDBA/SYSOPER)登录ORALCE数据库可以有两种⾝份验证的⽅法:即使⽤与操作系统集成的⾝份验证或使⽤ORALCE数据库的密码⽂件进⾏⾝份验证。
因此,管理好密码⽂件,对于控制授权⽤户从服务器本机或远端登录Oracle数据库系统,执⾏数据库管理⼯作,具有重要的意义.ORALCE⼝令⽂件⽤于存储拥有部分特权⽤户(sys等⽤户)的⼝令(注意:普通账号密码是不会存储在⼝令⽂件的)。
允许⽤户通过⼝令⽂件验证,在数据库未启动之前登陆,从⽽启动数据库。
如果没有⼝令⽂件,在数据库未启动之前就只能通过操作系统认证.⼝令⽂件存放在$ORACLE_HOME/dbs⽬录下(linux,window放在database),默认名称是orapw$ORACLE_SID。
即密码⽂件位置:Linux下的存放位置:$ORACLE_HOME/dbs/orapw<sid>.oraWindows下的存放位置:$ORACLE_HOME/database/PW%ORACLE_SID%.ora⼝令⽂件管理1:⼝令⽂件成员查看SQL> SELECT * FROM V$PWFILE_USERS;USERNAME SYSDBA SYSOPER------------------------------ ------ -------SYS TRUE TRUE如果查询该视图没有的记录的话,那么这是什么情况呢?出现这种情况,⼀般是⼝令⽂件被删除或移⾛。
例如如下操作所⽰:oracle@DB-Server ~]$[oracle@DB-Server ~]$ cd $ORACLE_HOME/dbs[oracle@DB-Server dbs]$ mv orapwgsp /tmp[oracle@DB-Server dbs]$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.1.0 Production on Thu Aug 4 17:43:39 2016Copyright (c) 1982, 2009, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> SELECT * FROM V$PWFILE_USERS;no rows selectedSQL>ORACLE使⽤操作系统集成的⾝份验证或使⽤密码验证,这个类似SQL SERVER中的Windows⾝份验证和SQL Server验证⽅式,那么使⽤哪种⽅式登录数据库是由两个参数控制的。
oracle 两种或两种以上组合的鉴别技术
oracle 两种或两种以上组合的鉴别技术
Oracle提供了多种鉴别技术用于确保数据库用户的身份认证和
授权安全,以下是Oracle中两种或两种以上组合的鉴别技术:
1. 用户名密码鉴别:是最常见的鉴别技术,用户在登录时需要提供正确的用户名和密码来进行身份认证。
Oracle数据库会检查提供的用户名和密码是否匹配数据库中存储的用户凭证信息来确定身份。
2. 口令文件鉴别:在某些情况下,Oracle数据库可以使用一个
额外的密码文件来进行鉴别。
这个密码文件存储了用户的用户名和密码信息,用户需要使用指定的工具和权限管理这个密码文件,以确保只有具有访问权限的用户可以进行身份认证。
3. 操作系统鉴别:Oracle数据库可以与操作系统集成,使用操
作系统的身份认证机制进行鉴别。
这种鉴别技术利用操作系统验证用户身份的功能,将用户和操作系统账户进行绑定,只有具有操作系统账户权限的用户才能进行身份认证。
4. 双因素鉴别:双因素鉴别技术结合了多种鉴别因素,如用户名/密码、指纹识别、硬件令牌等。
用户在登录时需要同时提
供多种鉴别因素确保身份的安全性。
5. 数据库链接鉴别:当Oracle数据库作为被链接服务器时,
可以使用链接服务器的数据库进行鉴别。
这种鉴别技术适用于跨多个数据库的应用场景,以确保链接服务器的身份合法和安全。
这些鉴别技术可以根据实际需求进行组合使用,以提供更高级别的安全性和访问控制。
Oracle-OS认证以及口令文件
在unix/linux下也可以在文件sqlnet.ora中增加SQLNET.AUTHENTICATION_SERVICES=(none)以及删除dba(groupdel dba)组或者把oracle用户从dba组中删除都可以屏蔽os认证。利用这两种方法屏蔽os功能似乎总有些让人不放心,或者说不能让人完全信服,因为毕竟系统管理员还是可以创建ora_dba or dba组以及修改sqlnet.ora文件......
到底可以有几个用户被授予sysdba或者sysoper权限,是由创建口令文件时指定的entries数决定的,准确的说还不完全是,最终还和os block的大小有关,如果entries指定了5,一个os block可以存放8个用户的口令,那么可以由8个用户被授予sysdba或者sysoper。
还有一个问题修改了口令,口令长度增加了,按说占用的空间多了,事实是不论我们的口令多长,加密之后的长度几乎都是相同的,也就是说口令文件占用的大小和口令指定的长度几乎关系不大!
但是方便的同时也带来了一些安全隐患,于是很多人想屏蔽os认证,
在win下只要把oracle_home/NETWORK/admin/sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES= (nts)nts改成none或者注释掉这句话(在前面加上#),就可以屏蔽os功能,要想以sys用户连上数据库必须输入正确的sys口令,或者可以把oracle的安装用户从组ora_dba中删除掉,当然也可以直接把ora_dba这个组也删除,都可以屏蔽os功能.如:SQL> connect /as sysdbaERROR:ORA-01031: 权限不足SQL> connect sys/aaa as sysdbaERROR:ORA-01017: 用户名/口令无效; 登录被拒绝SQL> connect aaa/bbb as sysdbaERROR:ORA-01031: 权限不足SQL> connect sys/system as sysdba已连接。SQL>
oracle中os认证,参数remote_login_passwordfile,口令文件(转)
1、os认证oracle安装之后默认情况下是启动os认证。
os认证的意思是把登录到数据库的用户和口令校验放在了操作系统一级。
如果以安装oracle时的用户登录os ,那么登录oracle数据库时不需要任何验证如:SQL> conn test/oracle as sysdbaConnected.SQL> conn test/oracle@orcl as sysdbaConnected.SQL> conn /as sysdbaConnected.SQL> conn ss/ss as sysdbaConnected.SQL> conn ss/ss@orcl as sysdbaConnected.SQL> conn test/ss@orcl as sysdbaConnected.SQL> conn test/oracle@orcl as sysdbaConnected.不论输入什么用户,那怕该用户不存在,只要一sysdba的权限连接都可以连接,这样在虽然很方便但是很不安全。
这是我们可以把oracle_home/NETWORK/admin/sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES= (nts)nts改成none或者注释掉这句话(在前面加上#),就可以屏蔽os功能,要想sys用户连接数据库必须输入正确的口令,或者将该用户从ora_dba组删除。
SQLNET.AUTHENTICATION_SERVICES=(NTS)|(NONE) |(ALL)SQLNET.AUTHENTICATION_SERVICES=(NTS): 操作系统认证方式,不使用口令文件SQLNET.AUTHENTICATION_SERVICES=(NONE):口令文件认证方式SQLNET.AUTHENTICATION_SERVICES=(ALL):两种都采用2、参数remote_login_passwordfileREMOTE_LOGIN_PASSWORDFILE=(NONE)|(EXCLUSIVE)|(SHARED)REMOTE_LOGIN_PASSWORDFILE=(NONE):不使用口令文件,操作系统认证REMOTE_LOGIN_PASSWORDFILE=(EXCLUSIVE):口令文件认证方式,但只有一个数据库实例可以使用此文件,系统允许将SYSOPER/SYSDBA授予除INTERNAL/SYS以外的其他用户,且以具有这类身份的其他用户登录是有效的REMOTE_LOGIN_PASSWORDFILE=(SHARED):口令文件认证方式,可有多个数据库实例使用此文件,但是此设置下只有INTERNAL/SYS帐号能被识别,即使文件中存有其他用户的信息,也不允许他们以SYSOPER/SYSDBA登录3,、oracle口令文件oracle的口令文件的作用是存放所有已sysdba或者sysoper权限的连接数据的用户,使用口令文件的好处就是,在数据关闭的情况下,依然可以通过口令文件验证来连接数据库。
oracle用户认证和密码设置技巧
oracle用户认证和密码设置技巧oracle用户认证和密码设置技巧ORACLE用户认证和密码字体: 小中大 | 打印发表于: 2007-11-30 14:06 作者: freellf 来源: CNOUG博客首页ORACLE_HOME:oracle安装目录,ORACLE_SID:oracle实例名。
以上两个环境变量都可以注册表里面找到,注册表的路径是:HKEY_LOCAL_MACHINE=>SOFTWARE=>ORACLE=>HOME 0[size=10.5pt]INIT.ORA:ORACLE初始化参数文件D:\oracle\admin\DB_NAME\pfile\init.oraRemote_login_passwordfile:oracle数据库远程登录的认证方式,参数有三个:NONE(无认证)、EXCLUSIVE(分别认证)、SHARED(共同认证)SQLNET.ORA:认证文件D:\>oracle\ora92\network\admin\sqlnet.oraSQLNET.AVTHENTICATION_SERVICES=(NTS)操作系统认证PWD$ORACLE_SID:认证口令文件D:\oracle\ora92\network\admin\sqlnet.oraORAPWD:重建口令文件系统命令命令格式:C:\>orapwd file=%ORACLE_HOME%\database\pw.ORA*/口令文件路径Password=******/密码Entries=30*/可同时登录的SYS用户一、Oracle用户登录在oracle安装完成之后,有三个用户能登录,sys,system,scott 这三个用户可以用来登录,其中sys,system两个是管理员用户,scott 是普通用户,是用来学习的。
Oracle登录可以用“SQL Plus”或“SQLPlus Worksheet”登录,也可以在命令行下登录SQL Plus登录界面:在oracle安装完成之后,默认的登录方式是系统认证,这时可以不输入密码进行登录管理,注意是sys用户。
oracle中os认证,参数remote_login_passwordfile,口令文件(转)
1、os认证oracle安装之后默认情况下是启动os认证。
os认证的意思是把登录到数据库的用户和口令校验放在了操作系统一级。
如果以安装oracle时的用户登录os ,那么登录oracle数据库时不需要任何验证如:SQL> conn test/oracle as sysdbaConnected.SQL> conn test/oracle@orcl as sysdbaConnected.SQL> conn /as sysdbaConnected.SQL> conn ss/ss as sysdbaConnected.SQL> conn ss/ss@orcl as sysdbaConnected.SQL> conn test/ss@orcl as sysdbaConnected.SQL> conn test/oracle@orcl as sysdbaConnected.不论输入什么用户,那怕该用户不存在,只要一sysdba的权限连接都可以连接,这样在虽然很方便但是很不安全。
这是我们可以把oracle_home/NETWORK/admin/sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES= (nts)nts改成none或者注释掉这句话(在前面加上#),就可以屏蔽os功能,要想sys用户连接数据库必须输入正确的口令,或者将该用户从ora_dba组删除。
SQLNET.AUTHENTICATION_SERVICES=(NTS)|(NONE) |(ALL)SQLNET.AUTHENTICATION_SERVICES=(NTS): 操作系统认证方式,不使用口令文件SQLNET.AUTHENTICATION_SERVICES=(NONE):口令文件认证方式SQLNET.AUTHENTICATION_SERVICES=(ALL):两种都采用2、参数remote_login_passwordfileREMOTE_LOGIN_PASSWORDFILE=(NONE)|(EXCLUSIVE)|(SHARED)REMOTE_LOGIN_PASSWORDFILE=(NONE):不使用口令文件,操作系统认证REMOTE_LOGIN_PASSWORDFILE=(EXCLUSIVE):口令文件认证方式,但只有一个数据库实例可以使用此文件,系统允许将SYSOPER/SYSDBA授予除INTERNAL/SYS以外的其他用户,且以具有这类身份的其他用户登录是有效的REMOTE_LOGIN_PASSWORDFILE=(SHARED):口令文件认证方式,可有多个数据库实例使用此文件,但是此设置下只有INTERNAL/SYS帐号能被识别,即使文件中存有其他用户的信息,也不允许他们以SYSOPER/SYSDBA登录3,、oracle口令文件oracle的口令文件的作用是存放所有已sysdba或者sysoper权限的连接数据的用户,使用口令文件的好处就是,在数据关闭的情况下,依然可以通过口令文件验证来连接数据库。
oracle登陆有两种认证方式
oracle登陆有两种认证方式oracle登陆有两种认证方式Oracle的技术广泛应用于各行各业,其中电信、电力、金融、政府及大量制造业都需要Oracle技术人才,Oracle公司针对职业教育市场在全球推广的项目,其以低廉的成本给这部分人群提供Oracle技术培训。
下面是店铺整理的关于oracle登陆有两种认证方式,欢迎大家参考!Password File/Operating System Authentication1、os认证需要把登陆用户加入到os相应的用户组Operating System Group UNIX User Group Windows User GroupOSDBA dba ORA_DBAOSOPER oper ORA_OPER本机CONNECT / AS SYSDBACONNECT / AS SYSOPER远程CONNECT /@net_service_name AS SYSDBACONNECT /@net_service_name AS SYSOPER2、密码文件认证,密码文件在不同的os平台下,路径和默认的名称不同。
ORAPWD FILE=filename PASSWORD=password ENTRIES=max_users force =yREMOTE_LOGIN_PASSWORDFILE=none/exclusive/sharenone/exclusive(可以修改增加用户)/share(不可修改)CONNECT oe/oe AS SYSDBAselect * from V$PWFILE_USERS;[@more@]Oracle登录认证有两种方式,基于操作系统的登录认证,基于oracle的验证。
可以通过改变sqlnet.ora文件,可以修改oracle登录认证方式:SQLNET.AUTHENTICATION_SERVICES= (NTS)是基于操作系统验证;SQLNET.AUTHENTICATION_SERVICES= (NONE)是基于Oracle验证;SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)是二者共存。
oracle数据库安全管理——oracle认证方法
oracle数据库安全管理——oracle认证⽅法
如果⽤户组属于OSDBA组,并且使⽤SYSDBA⾝份连接到数据库,则该组⽤户拥有SYSDBA系统权限;如果⽤户不属于这两个组,却试图使⽤SYSDBA或者SYSOPER⾝份连接到数据库,则连接数据库的操作将会失败。
在SQLPLUS中,如果采⽤操作系统认证⽅式登录,可以使⽤如下命令:
CONNECT / AS SYSDBA
CONNECT / AS SYSOPER
ORACLE数据库的登录⾝份如下:
SYSDBA:
数据库管理员⾝份,具有Oracle⼀切⾏为的特权,例如创建、修改、删除数据库;启动和关闭数据库;备份、恢复数据;⽇志归档和会话限制等功能。
SYSOPER:
数据库操作员⾝份,拥有与SYSDBA相似的权限,只不过不能够创建和删除数据库等。
NORMAL:
普通⽤户⾝份,普通⽤户可以使⽤NORMAL⾝份连接到SQLPLUS访问数据库。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
概述:本文只讨论OS认证和口令文件认证方式的配置方法,如何配置以及使用OS认证和口令文件认证方式验证SYSDBA/SYSOPER权限。
实验环境:Oracle 11.2.0.1 + RHEL 5.4特殊权限与Oracle登陆认证管理在开始学Oracle的时候有件事一直让我感觉很奇怪,就是为什么在数据没有起来的时候只要登录到安装Oracle的操作系统中直接用sqlplus / as sysdba就能登陆到数据库中然后对数据库进行启动停止之类的操作。
后来看到关于Oracle口令文件相关资料的时候才豁然开朗:数据库认证信息并不一定存在数据库中的,这点和SQL Server很是不一样。
在Oracle中有两类特殊的权限SYSDBA和SYSOPER,当DBA需要对数据库进行维护管理操作的时候必须具有这两类特殊权限之中的一种。
在数据库没有打开的时候,使用数据库内建的账号是无法登陆数据库的,但是拥有SYSDBA或是SYSOPER权限的用户是可以登陆的。
认证用户是否拥有两类特殊权限的方法有两种:OS认证和口令文件认证。
OS认证和口令文件认证方法Oracle数据库究竟使用OS认证还是口令文件认证来进行管理取决于下面三个因素:∙SQLNET.ORA参数文件中的参数SQLNET.AUTHENTICATION_SERVICES设置∙PFILE(SPFILE)参数文件中的参数REMOTE_LOGIN_PASSWORDFILE设置∙口令文件orapw$SID(Linux) | PWD$SID.ora(Windows)Oracle权限认证的基本顺序是这样的,先由SQLNET.AUTHENTICATION_SERVICES的设置值来决定是使用OS认证还是口令文件认证,如果使用口令文件认证的话就要看后面两个条件了:如果REMOTE_LOGIN_PASSWORDFILE参数设置为非NONE而且口令文件存在的话就能正常使用口令文件认证,否则将会失败。
SQLNET.AUTHENTICATION_SERVICES参数在SQLNET.ORA(位于$ORACLE_HOME/NETWORK/ADMIN目录中)文件中,需要修改时直接用文本编辑器打开修改就行了,对于不同的操作系统SQLNET.AUTHENTICATION_SERVICES的取值会有些不一样,通常我们会用到下面的一些设置值:∙SQLNET.AUTHENTICATION_SERVICES = (ALL)对Linux系统,支持OS认证和口令文件认证。
对Windows系统,实际实验是不支持此参数,验证失败。
∙SQLNET.AUTHENTICATION_SERVICES = (NTS)此设置值仅用于Windows NT系统,此设置同时支持OS认证和口令文件认证,只有在设置了(NTS)值之后运行在Windows系统上的Oracle才支持OS认证。
∙SQLNET.AUTHENTICATION_SERVICES = (NONE)此设置值在Windows和Linux是作用一样的,指定Oracle只使用口令文件认证。
∙不设置此参数或SQLNET.AUTHENTICATION_SERVICES =OSDBA用户组的用户可以使用SYSDBA权限登陆数据库,OSOPER用户组的的用户可以使用SYSOPER 权限来登陆数据库。
使用sqlplus可以用下面方法登陆CONNECT/AS SYSDBACONNECT/AS SYSOPER拥有OS权限的用户登陆数据库时不再需要输入用户名和密码,因此使用下面的命令也是可以正常登陆的:CONNECT ANY_USER_NAME/ANY_PASSWORD AS SYSDBACONNECT ANY_USER_NAME/ANY_PASSWORD AS SYSOPER因此要创建一个新的OS认证帐号步骤是:1. 建立一个OS用户2. 将用户加入到OSDBA或是OSOPER用户组3. 用新增加的用户登陆系统,然后输入sqlplus / AS SYSDBA进行登陆REMOTE_LOGIN_PASSWORDFILE参数REMOTE_LOGIN_PASSWORDFILE系统参数的设置制定了数据库使用口令文件的方法,此参数可以设置的值有三个:∙REMOTE_LOGIN_PASSWORDFILE = NONE不使用口令文件∙REMOTE_LOGIN_PASSWORDFILE = EXCLUSIVE使用口令文件,但只有一个数据库实例可用使用∙REMOTE_LOGIN_PASSWORDFILE = SHARED多个数据库实例共用一个口令文件,这种设置下是不能增加其他数据库用户作为特殊权限用户到口令文件中的。
REMOTE_LOGIN_PASSWORDFILE参数属于初始化参数,只能在init.ora/pfile中指定或是在数据库打开状态下使用下面语句修改,然后重新启动数据库。
ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;要检查当前REMOTE_LOGIN_PASSWORDFILE的设定值在登陆Oracle后输入下面的命令SQL>show parameter remote/** 这是输出结果,看remote_login_passwordfile一行NAME TYPE VALUE------------------------------------ ----------- ------------------------------remote_archive_enable string trueremote_dependencies_mode string TIMESTAMPremote_listener stringremote_login_passwordfile string EXCLUSIVEremote_os_authent boolean FALSEremote_os_roles boolean FALSESQL>*/口令文件和口令文件认证口令文件存放着被授予SYSDBA或SYSOPER权限的用户的用户名和密码。
它是一个加密的文件,用户不能修改这个文件,在Linux系统中口令文件一般保存在$ORACLE_HOME/dbs目录下,文件名为orapw$SID;在Windows 系统中口令文件一般保存在$ORACLE_HOME/database目录下,文件名为PWD$SID.ora。
使用口令文件认证的基本步骤是:1. 使用orapwd工具生成口令文件2. 设置REMOTE_LOGIN_PASSWORDFILE为EXCLUSIVE或是SHARED3. 使用SYS登陆数据库,创建新的数据库用户4. 使用GRANT命令授予新创建的用户SYSDBA/SYSOPER权限1、使用orapwd工具生成口令文件我们可以使用Oracle提供的工具orapwd来创建或者重新初始化一个口令文件:[oracle@RHEL4 dbs]$ orapwdUsage: orapwd file=<fname> password=<password> entries=<users> force=<y/n>wherefile - name of password file (mand),password - password for SYS (mand),entries - maximum number of distinct DBA and force - whether to overwrite existing file (opt), OPERs (opt),There are no spaces around the equal-to (=) character.[oracle@RHEL4 ~]$ orapwd file='$ORACLE_HOME/dbs/orapw$ORACLE_SID' password=pwdentries=10 force=y[oracle@RHEL4 ~]$注意:使用orapwd重新生成口令文件之后以保存的授予的其他用户的SYSDBA或是SYSOPER权限将会丢失,需要重新的GRANT。
设定的entries值是不能修改的,如果要修改entries的话需要重新生成口令文件,在生成口令文件之前可以先通过V$PWFILE_USERS视图查询出当前被授予SYSDBA/SYSOPER权限的用户,然后在重新生成口令文件以后重新对这些用户授予SYSDBA/SYSOPER权限2、设置REMOTE_LOGIN_PASSWORDFILE为EXCLUSIVE或是SHAREDALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;3、使用SYS登陆数据库,创建新的数据库用户CREATEUSER testIDENTIFIED BY test;4、使用GRANT命令授予新创建的用户SYSDBA/SYSOPER权限GRANT SYSDBA TO test.每次在Oracle系统里面使用GRANT SYSDBA/SYSOPER授予新用户特殊权限或是ALTER USER命令修改拥有SYSDBA/SYSOPER权限的用户密码的时候,Oracle都会自动的修改口令文件,增加或是修改相应的项目,这样保证在数据没有打开的情况拥有特殊权限的用户能正常的登陆数据库以进行管理操作。
实验上面长篇大论的说了那么多,下面我们来做实验验证一下。
实验都是基于Linux系统来做的,做实验之前先使用下面的命令创建一个口令文件:[oracle@RHEL4 ~]$ orapwd file='$ORACLE_HOME/dbs/orapw$ORACLE_SID' password=pwdentries=10 force=y1、验证OS认证设置SQLNET.ORA中参数SQLNET.AUTHENTICATION_SERVICES = (ALL)或是不设置,REMOTE_LOGIN_PASSWORDFILE = NONE,然后进行下面的操作。
本地使用下面两种方式登陆,都能成功[oracle@RHEL4 dbs]$ sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Sun Jun 7 15:06:55 2008Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL>[oracle@RHEL4 dbs]$ sqlplus aaa/bbb as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Sun Jun 7 15:16:25 2008Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL>远程使用口令文件方式登陆,失败D:\Oracle\SQLPlus10.2> sqlplus sys/pwd@192.168.0.201/orcl as sysdbaSQL*Plus: Release 10.2.0.4.0 - Production on Sat Jun 7 19:06:55 2008 Copyright (c) 1982, 2007, Oracle. All Rights Reserved.ERROR:ORA-01017: invalid username/password; logon deniedEnter user-name:2、两种认证都失效设置SQLNET.ORA中参数SQLNET.AUTHENTICATION_SERVICES = (NONE),REMOTE_LOGIN_PASSWORDFILE = NONE,然后进行下面的操作。