【转载】为什么任何随便输入的账号使用SYSDBA权限都能登陆oracle
其实简单点就是检查一下你的机器有没有一个ora_dba用户组,而且你登陆os的用户是否在这个组里,有的话问题的原因就找到了,下面是转的高手的介绍
本文环境配置:Oracle10gR2,Windows XP
Oracle的用户信息一般来说是保存在数据字典里的,所以常规用户在Oracle数据库没有启动的时候是无法登陆的。但有两类用户例外,这就是具有sysdba或者sysoper权限的用户。Oracle sysdba或者sysoper用户的登陆有两种方式:一是通过OS认证,二是通过密码文件验证。
究竟使用哪一种验证方式以及能否成功登陆取决于三个方面的因素:
1. sqlnet.ora中SQLNET.AUTHENTICATION_SERVICES的设置
2. 参数文件中REMOTE_LOGIN_PASSWORDFILE的设置
3. 密码文件 PWD%sid%.ora
Oracle进行权限验证的大致顺序如下:
1. 根据SQLNET.AUTHENTICATION_SERVICES的值决定是进行os验证还是密码文件验证。
2. 如果是os验证,根据当前用户的用户组判断是否具有sysdba权限。如果os验证失败,则进行密码文件验证。
2. 如果是密码文件验证,REMOTE_LOGIN_PASSWORDFILE的值以及密码文件是否存在决定了验证是否成功。
1. OS 验 证
要启用os验证,就必须在qlnet.ora中设置SQLNET.AUTHENTICATION_SERVICES=(NTS),然后在Windows中建立ora_dba用户组,把相关用户加入到这个组中(e.g., administrator),这样administrator就可以在不用提供用户名和密码(或者提供任意的用户名和密码)的情况下以sysdba身份本地登陆。因为操作系统已经代替Oracle进行了验证。
测试一:ora_dba用户本地登陆
- C:/>sqlplus / as sysdba
- Connected to:
- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
- With the OLAP and Data Mining options
- SQL>
- C:/>sqlplus wrong_user/wrong_password as sysdba
- Connected to:
- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
- With the OLAP and Data Mining options
- SQL>
- C:/>sqlplus / as sysdba
- Connected to:
- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
- With the OLAP and Data Mining options
- SQL>
- C:/>sqlplus wrong_user/wrong_password as sysdba
- Connected to:
- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
- With the OLAP and Data Mining options
- SQL>
测试二:非ora_dba用户本地登陆
- C:/>sqlplus / as sysdba
- ERROR:
- ORA-01031: insufficient privileges
- Enter user-name:
- C:/>sqlplus wrong_user/wrong_password sysdba
- ERROR:
- ORA-01017: invalid username/password; logon denied
- Enter user-name:
- C:/>sqlplus sys/change_on_install as sysdba
- Connected to:
- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
- With the OLAP and Data Mining options
- SQL>
- C:/>sqlplus / as sysdba
- ERROR:
- ORA-01031: insufficient privileges
- Enter user-name:
- C:/>sqlplus wrong_user/wrong_password sysdba
- ERROR:
- ORA-01017: invalid username/password; logon denied
- Enter user-name:
- C:/>sqlplus sys/change_on_install as sysdba
- Connected to:
- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
- With the OLAP and Data Mining options
- SQL>
2. 密码文件验证
密码文件包含了被授予sysdba和sysoper权限的用户的用户名和密码。这是一个加密文件,一般来说存放在%oracle_home%/database目录下,文件名为PWD%sid%.ora。
如果要使用密码文件验证,则把sqlnet.ora改为SQLNET.AUTHENTICATION_SERVICES=none,或者从sqlnet.ora中删除SQLNET.AUTHENTICATION_SERVICES。同上匿名登陆sqlplus会失败,给出用户名和密码就可以成功登陆。
- C:/>sqlplus / as sysdba
- ERROR:
- ORA-01031: insufficient privileges
- Enter user-name:
- C:/>sqlplus sys/change_on_install as sysdba
- Connected to an idle instance.
- idle>
- C:/>sqlplus / as sysdba
- ERROR:
- ORA-01031: insufficient privileges
- Enter user-name:
- C:/>sqlplus sys/change_on_install as sysdba
- Connected to an idle instance.
- idle>
测试一:删除密码文件。使用用户名和密码登陆,失败!
- C:/>sqlplus sys/change_on_install as sysdba
- ERROR:
- ORA-01031: insufficient privileges
- Enter user-name:
- C:/>sqlplus sys/change_on_install as sysdba
- ERROR:
- ORA-01031: insufficient privileges
- Enter user-name:
测试二:恢复密码文件,设置REMOTE_LOGIN_PASSWORDFILE=none。使用用户名和密码登陆,失败!
- SQL> alter system set remote_login_passwordfile=none scope=spfile;
- System altered.
- C:/>sqlplus sys/change_on_install as sysdba
- ERROR:
- ORA-01017: invalid username/password; logon denied
- Enter user-name:
- SQL> alter system set remote_login_passwordfile=none scope=spfile;
- System altered.
- C:/>sqlplus sys/change_on_install as sysdba
- ERROR:
- ORA-01017: invalid username/password; logon denied
- Enter user-name:
测试三:恢复密码文件,设置REMOTE_LOGIN_PASSWORDFILE为EXCLUSIVE或者SHARED。使用用户名和密码登陆,成功!
- SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;
- System altered.
- C:/>sqlplus sys/change_on_install as sysdba
- Connected to an idle instance.
- SQL>
- SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;
- System altered.
- C:/>sqlplus sys/change_on_install as sysdba
- Connected to an idle instance.
- SQL>
3. 密码文件
查看具有sysdba或者sysoper权限的用户:
- SQL> select * from v$pwfile_users;
- USERNAME SYSDB SYSOP
- ------------------------------ ------- -------
- SYS TRUE TRUE
- SQL> select * from v$pwfile_users;
- USERNAME SYSDB SYSOP
- ------------------------------ ------- -------
- SYS TRUE TRUE
每次使用grant sysdba/sysoper授予新用户特殊权限或是alter user命令修改拥有sysdba/sysoper权限的用户密码的时候,Oracle都会自动的同步密码文件,这样保证在数据库没有打开的情况拥有特殊权限的用户能正常的登陆数据库以进行管理操作。
- SQL> grant sysdba to logicgate;
- Grant succeeded.
- SQL> select * from v$pwfile_users;
- USERNAME SYSDB SYSOP
- ------------------------------- -------- --------
- SYS TRUE TRUE
- LOGICGATE TRUE FALSE
- SQL> grant sysdba to logicgate;
- Grant succeeded.
- SQL> select * from v$pwfile_users;
- USERNAME SYSDB SYSOP
- ------------------------------- -------- --------
- SYS TRUE TRUE
- LOGICGATE TRUE FALSE
使用orapwd命令可以重建密码文件。
- C:/>orapwd
- Usage: orapwd file=<fname> password=<password> entries=<users> force=<y/n>
- where
- file - name of password file (mandatory),
- password - password for SYS (mandatory),
- entries - maximum number of distinct DBA (optional),
- force - whether to overwrite existing file (optional)
- C:/>orapwd
- Usage: orapwd file=<fname> password=<password> entries=<users> force=<y/n>
- where
- file - name of password file (mandatory),
- password - password for SYS (mandatory),
- entries - maximum number of distinct DBA (optional),
- force - whether to overwrite existing file (optional)
其中文件名和密码是必需的。entries设置了密码文件可包含的dba用户的最大数目。force定义了是否覆盖当前文件。重建密码文件会清除系统内除了sys用户以外所有sysdba用户的密码。必须使用grant sysdba同步密码文件。
- C:/>orapwd file=%oracle_home%/database/PWDepcit.ora password=temp entries=20 force=y;
- C:/>sqlplus sys/temp as sysdba
- Connected to:
- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
- With the OLAP and Data Mining options
- SQL> select * from v$pwfile_users;
- USERNAME SYSDB SYSOP
- ------------------------------- -------- --------
- SYS TRUE TRUE
- C:/>orapwd file=%oracle_home%/database/PWDepcit.ora password=temp entries=20 force=y;
- C:/>sqlplus sys/temp as sysdba
- Connected to:
- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
- With the OLAP and Data Mining options
- SQL> select * from v$pwfile_users;
- USERNAME SYSDB SYSOP
- ------------------------------- -------- --------
- SYS TRUE TRUE
【转载】为什么任何随便输入的账号使用SYSDBA权限都能登陆oracle的更多相关文章
- 【转载】 C#检测输入的内容中是否含有中文
在C#开发中,可以结合正则表达式,来检测输入的内容中是否包含中文,Regex类是C#中有关正则表达式处理的相关类,功能强大,我们只需要设置好规则,即可很快检测出输入的字符串内容中是否含有中文信息. R ...
- 【转载】MySql新建账号并分配权限
在服务器的MySQL运维过程中,我们有时会遇到新建MySql账号的情况,要求新建的账号只允许某些特定的数据库操作权限,只能访问到特定的数据库,实现数据库权限的严格管理,以下以MySQL-Front管理 ...
- 转载——分享一个html+js+ashx+easyui+ado.net权限管理系统
EasyUI.权限管理 这是个都快被搞烂了的组合,但是easyui的确好用,权限管理在项目中的确实用.一直以来博客园里也不少朋友分享过,但是感觉好的要不没源码,要不就是过度设计写的太复杂看不懂,也懒得 ...
- CentOS学习笔记--账号管理与权限配置
Linux 的账号管理与权限配置 管理员的工作中,相当重要的一环就是『管理账号』啦! 使用者标识符: UID 与 GID 虽然我们登陆 Linux 主机的时候,输入的是我们的账号,但是其实 Linux ...
- mysql创建账号及管理权限
mysql创建账号及管理权限 0.mysql版本8.0.15,服务器版本:RHEL 6.5 1.创建用户名密码 mysql> use mysql; mysql> create user ' ...
- CentOS7安装及配置vsftpd (FTP服务器FTP账号创建以及权限设置)
本文章向大家介绍CentOS7安装及配置vsftpd (FTP服务器FTP账号创建以及权限设置),主要包括CentOS7安装及配置vsftpd (FTP服务器FTP账号创建以及权限设置)使用实例.应用 ...
- 解决升级WordPress及插件需输入FTP账号的问题
当添加,删除,升级 WordPress 插件或者直接升级 WordPress 的时候,WordPress 总是提示让你输入 FTP 帐号信息,非些烦人. 我们可以在 wp-config.php 中定义 ...
- git托管代码随笔--运用ssh传输,不用每次提交频繁输入github账号密码
遇到问题:在使用git bash的时候 每次git push均要输入账号密码. 问题原因:使用的是http传输,需用ssh传输. 解决方法: 1.设置密钥 ssh-keygen -t rsa -C & ...
- (转载):() { :|:& }; : # <-- 打开终端,输入这个,回车.你看到了什么??
代码::() { :|:& }; : 为什么这个东西会让你的系统死掉???有人执行了然后问我 让我们来分析一下这段代码,我改一下格式,但内容是一样的 代码::() # 定义一个叫“:”的过程 ...
随机推荐
- Python全栈开发 列表, 元组 数据类型知识运用及操作 range知识
一.列表 1.什么是列表? 列表是一个可变类型,由 [ ] 表示,每一项元素用逗号隔开.列表能够装大量的数据,可以装对象的对象. 2.列表的索引和切片. 列表和字符串一样,也有索引和切片.只不过列表 ...
- Python基础之Python分类
python环境 编译型: 一次性将所有程序编译成二级制文件,开发效率极低,因为一旦出现BUG所有的程序需要全部重新编译 缺点: 开发效率低,不能跨平台 优点: 执行速度快 解释型: 当程序执行时,一 ...
- Access sql语句创建表及字段类型(转)
http://www.cnblogs.com/hnyei/archive/2012/02/23/2364812.html 创建一张空表: Sql="Create TABLE [表名]&quo ...
- cf-Round551-Div2-C. Serval and Parenthesis Sequence(贪心)
题目链接:http://codeforces.com/contest/1153/problem/C 题意:给定由'(',')','?'组成的字符串,问是否能将其中的?全部换成'(‘,’)'使得字符串的 ...
- 贪吃蛇Ground Java实现(二)
package cn.tcc.snake.antition; import java.awt.Color;import java.awt.Graphics; import java.awt.Point ...
- 【zookeeper】使用场景
以下场景是我认为的zookeeper可能会大显身手的场景. 场景1:配置新增和更新 我们可以将zookeeper部署成一个配置服务,实现配置的存储和发布等功能. 具体的原理是:zookeeper可以按 ...
- Js或 Activex 控件调用打印预览等操作
<input value="打印" type="button" onclick="javascript:window.print()" ...
- DMZ原理与应用
DMZ是英文“demilitarized zone”的缩写,中文名称为“隔离区”,“非军事化区”.它是为了解决安装防火墙后外部网络不能访问内部网络服务器的问题,而设立的一个非安全系统与安全系统之间的缓 ...
- Spring配置文件XML详解
1.bean的基本属性配置: <!-- id是bean的标识符,必须唯一,如果没有配置id,name默认为标识符 如果配置了id,有配置了name,那么name为别名 name可以设置多个别名, ...
- PHP 根据两点的坐标计算之间的距离
define('PI',3.1415926535898); define('EARTH_RADIUS',6378.137); //计算范围,可以做搜索用户 function GetRange($lat ...