`
xmarkgogo
  • 浏览: 30679 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle数据库非Dba角色用户使用as sysdba仍然可以连接相关问题

 
阅读更多

1. Oracle 默认的三个重要角色

CONNECT创建session角色
RESOURCE创建资源角色,Create table 等等
DBA数据库管理员角色

参考网址:http://www.blogjava.net/caihaibo2008/archive/2008/12/11/245723.html

2.Oracle有两个具有dba角色的用户,分别是sys与system,他们都可以以sysdba身份登录数据库。既然system具有dba角色,为什么还分配他sysoper身份?

【sys】所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的,由数据库自己维护,任何用户都不能手动更改。sys用户拥有dba,sysdba,sysoper等角色或权限,是oracle权限最高的用户。
【system】用户用于存放次一级的内部数据,如oracle的一些特性或工具的管理信息。system用户拥有普通dba角色权限。

其次的区别,权限的不同。
【system】用户只能用normal身份登陆em,除非你对它授予了sysdba的系统权限或者syspoer系统权限。
【sys】用户具有“SYSDBA”或者“SYSOPER”系统权限,登陆em也只能用这两个身份,不能用normal。

3. 在今天的数据库实验课上遇到了如下所示的问题:

如上图所示,SYS用户可以正常登录数据库,但是其他用户、甚至随便乱写,以as sysdba的方式也可以成功连接数据库,并且show user显示的仍然是SYS,这是什么原因呢???


Oracle登录的时候有三种登录验证机制

1. 操作系统验证

2. 密码文件验证

3. 数据库验证

一般权限用户的登录验证都是第三种方式,即数据库验证,因为用户名和密码都是存储在数据库当中的。然而,SYS用户(具有SYSDBA和SYSOPER权限的用户)却不是数据库验证。在oracle数据没有启动的时候,SYS用户就可以连接到数据库,并对其进行启动等操作,所以不可能是数据库验证。SYS用户采用的是第一种和第二种验证方式。

Linux下Oracle的启动过程

lsnrctl start 启动监听(接收用户请求)。此时数据库没启动,所以不能验证普通权限用户

sqlplus /nolog 启动sqlplus

conn sys/oracle as sysdba,监听看到是sysdba用户,就进行操作系统验证或者文件验证,如果正确

startup 启动数据库实例。

当此时再以普通权限用户连接时,就直接将请求发送给数据库进行数据库验证。

Windows下Oracle的启动过程

lsnrctl start 启动监听

oradim -startup -sid orcl 将复杂的过程封装了

conn / as sysdba; 这样写居然可以连接!或者随便写个名字都可以连接,只要/保留就可以。如下图:


因为,默认采用的验证方式是操作系统验证!如下图所示,在计算机管理里面的ORA_DBA组有当前计算机操作系统用户uestcong



当我把uestcong这个用户删除之后,再重新使用conn a/b as sysdba登录,就出现如下所示的情况了:


显示权限不足,没有验证通过。

以uestcong登录操作系统时,默认就是DBA管理员,在监听看到as sysdba时,就首先进行操作系统验证,操作系统的用户uestcong当然就能通过验证。当我把uestcong删除之后,就会用密码文件的方式验证,此时把sys和正确的密码重新连接时,就可以直接连接了。


所以在使用oracle进行开发时,应该把操作系统验证取消,使用密码文件验证的方式。如果密码忘记,可以把密码文件删除,用新的密码文件代替就可以。

密码文件的路径:D:\oraclexe\app\oracle\product\10.2.0\server\database\PWDXE.ora(PWDXE.ora我使用的是XE版本),当把密码文件删除时,再用正确的用户名密码连接,就无法进行连接了。


感谢传智博客王治国的精彩讲解!

参考网址:http://topic.csdn.net/u/20110823/18/e9846996-22f4-4429-a7f5-47877a729ef0.html

分享到:
评论

相关推荐

    Sys和system用户、sysdba 和sysoper系统权限、dba角色的区别

    当一个非`sys`用户以`as sysdba`登录时,实际上是模拟`sys`用户进行操作,这意味着所有在此模式下创建的对象都将属于`sys`用户。同样,任何用户如果以`as sysdba`登录,无论原始用户是谁,都将获得与`sys`用户相同的...

    Oracle创建系统角色DBA

    在Oracle数据库中,系统角色是预定义的一组权限集合,它们为数据库管理员(DBA)提供了方便的方式来管理和分配权限。DBA角色是最具权限的角色之一,通常赋予那些负责数据库全面管理的用户。当误删除了这个关键角色时...

    修改oracle数据库用户名及密码

    在操作过程中,可能会导致用户被锁,可以使用命令 `SELECT LOCK_DATE,username from dba_users where username='USERNAME';` 查看被锁的用户,然后使用命令 `ALTER USER USER_NAME ACCOUNT UNLOCK;` 解锁用户。 ...

    连接oracle数据库的cmd命令

    在IT领域,尤其是在数据库管理与开发中,Oracle数据库因其强大的功能和广泛的适用性而备受青睐。本文将基于提供的文件信息,深入探讨如何通过CMD命令行工具连接到Oracle数据库,并介绍如何利用CMD执行特定的数据库...

    oracle 连接数据库命令

    本文主要介绍了如何使用SQL*Plus连接Oracle数据库以及解决一些常见的连接问题的方法。包括了如何以不同身份登录数据库、解锁账户、授权以及启动和关闭数据库等操作。掌握了这些基本技能后,可以更高效地管理和使用...

    解锁或者修改oracle 数据库用户密码.doc

    Oracle 数据库用户密码的管理是非常重要的,一方面可以防止非法访问和数据泄露,另一方面可以确保数据库的安全性和可靠性。因此,数据库管理员应该定期检查和更新密码,以确保数据库的安全性。 四、结论 解锁或者...

    Oracle数据库命令 个人总结

    "Oracle数据库命令个人总结" Oracle数据库命令个人总结是徐博文在2014年3月整理的关于Oracle数据库的命令和心得的...这些命令和心得可以帮助Oracle数据库管理员和开发者更好地使用Oracle数据库,提高工作效率和质量。

    2021年Oracle(DBA)数据库笔记。

    - 使用`sqlplus / as sysdba`以`sysdba`用户身份登录,拥有高级管理权限。 - 使用`sqlplus username/password`以特定用户名和密码登录。 - 在命令行界面中直接使用`sqlplus`,根据提示输入用户名和密码。 **3. ...

    Oracle数据库常见维护问题手册-精典

    ### Oracle数据库常见维护问题手册-精典 #### 数据库基础 **数据库启动方式** Oracle数据库启动通常通过`SQL*Plus`工具来进行。首先确保已经安装并配置了正确的Oracle客户端环境,然后通过以下命令来启动数据库:...

    Oracle数据库的日常使用命令

    Oracle数据库的日常使用命令涵盖了数据库管理员(DBA)和开发人员在日常工作中频繁使用的各种操作,以下是对这些命令的详细解析: ### 启动和关闭数据库 - **启动数据库**: 使用`sqlplus /nolog; SQL> conn / as ...

    Linux下修改Oracle用户密码

    4. **连接到Oracle数据库**:使用`conn system/密码 as sysdba`或`connect / as sysdba`命令连接到Oracle数据库。这里,“密码”指的是当前的系统管理员(sys)密码,而“as sysdba”则表示以最高权限登录数据库。 ...

    Oracle数据库用户角色、表空间创建、删除命令

    ### Oracle数据库用户角色、表空间创建与删除命令详解 #### 创建数据表空间 在Oracle数据库中,表空间是逻辑存储单元,它由一个或多个数据文件组成,用于存储数据库对象,例如表、索引等。要创建一个新的数据表...

    oracle 数据库用户被锁定在linux下操作

    3.使用 dba 连接数据库,命令为:connect / as sysdba。 4.修改用户解除锁定,命令为:alter user 用户名 account unlock。 5.提交修改,命令为:commit。 解决 SQLPlus 命令行工具中的错误 在使用 SQLPlus 命令行...

    Oracle数据库操作命令.doc

    Oracle数据库操作命令 Oracle数据库是当前最流行的关系型数据库管理系统之一,具有高效、可靠、安全等特点。...Oracle数据库操作命令是数据库管理员的必备技能,正确地使用这些命令可以提高数据库管理效率和安全性。

    Oracle通过sqlplus连接数据库的方式

    通过sqlplus可以连接数据库根据用户权限进行数据或者设定操作,这篇文章介绍一下常用的连接方式。 环境准备 使用Oracle的精简版创建docker方式的demo环境,详细可参看: https://www.jb51.net/article/153533.htm ...

    Oracle数据库用户角色、表空间创建、删除命令.pdf

    Oracle数据库是一种广泛使用的大型关系型数据库管理系统,它...以上是Oracle数据库中关于用户角色、表空间创建与删除的基本操作,以及数据备份恢复的方法。了解并熟练掌握这些命令对于有效管理Oracle数据库至关重要。

    oracle数据库备份与还原实例

    这将创建一个名为 "newtest" 的用户,并授予该用户连接、资源和导入整个数据库的权限。 然后,使用 imp 命令将备份文件导入到数据库中: ``` cd /home/oracle/data imp ``` 这将将备份文件中的数据导入到数据库中,...

    01-oracle数据库简单使用1

    本文将围绕"01-oracle数据库简单使用1"的主题,详细介绍Oracle数据库的基础知识,包括Oracle服务、数据库版本、用户管理和账号管理。 首先,Oracle ORCL VSS Writer Service是Oracle卷映射拷贝写入服务,它是Volume...

    Unix和Linux下的Oracle数据库管

    也可以使用`sqlplus / as sysdba`以管理员身份操作。 3. **监听器(Listener)**:Oracle数据库服务通过监听器接收和转发连接请求。`lsnrctl`工具用于管理监听器,如启动、停止和查看状态。 三、性能优化 1. **...

Global site tag (gtag.js) - Google Analytics