zoukankan      html  css  js  c++  java
  • 一个初学者困惑的Oracle的认证问题

      总有初学者问这个问题为什么Oracle 不要密码也可以进入。

      其实这就是Oracle设计的精巧之处。

     一.直接通过 sqlplus / as sysdba  方式登录。

      当我们安装了Oracle 之后,直接通过sql / as sysdba,就直接可以登录Oracle,即使设置了SYS用户的密码,完全没有效果。请注意该中情况只有在 

      用户已经登入OS ,完成了OS认证的情况下有效,如果通过 i sqlplus 是无法登录。而且以

      

    View Code
    1  sqlplus  sys123/123 as sysdba; --sys123这个用户,123这个密码都不存在。
    2 sqlplus / as sysdba; --

      这两种可以正常登录。是不是由于Oracle 的认证失效了?不是。

      此时oracle 采用的默认 认证方式。即OS认证方式。

      我们如果是NT,平台,可以在用户组中找到,oracle_dba这个用户组,而且当前用户正在这个这个组中。 说明用户通过OS的认证方式,即也通过Orcle默认的认证方式。

      问题:一般OS管理人员,和 Oracle DBA 是由不同的团队组成的。这样如果OS 管理人员如果 对Oracle稍有了解的话,就可直接登录Oracle,而且是最高权限。存在很大的安全隐患。

      解决办法:

      1.从OS中将 oracle_dba这个用户组删除掉,或者将当前用户从改组中删除。这样Oracle 的OS认证无法通过。

      2.取消Oracle 的 OS 认证方式。

      在sqlnet.ora文件中有一个设置选项

      SQLNET.AUTHENTICATION_SERVIES  其有两个值

      SQLNET.AUTHENTICATION_SERVIES=(NTS)  --启用OS 认证模式

      SQLNET.AUTHENTICATION_SERVIES=(NONE)-- 关闭OS 认证模式

          关闭之后,通过 sqlplus / as sysdba;再也无法登录进系统。

      二. 通过  sqlplus sys/oracle 方式登录可以通过,。而通过sqlplus sysdba/oracle 无法通过

      首先区别DBA和 SYSDBA角色

      dba是一种role角色,对应的是对Oracle实例里系统的操作权限的集合,是实实在在存在在Oracle里的物理对象而

      sysdba是概念上的role,是一种登录认证时的身份标识而已,在OS认证时用到。

      

    系统中只有dba权限。Sysdba权限是没有的。

    --DBA具有的权限

    select * from DBA_ROLES where role like 'DBA';

    得到结果是具有DBA角色的用户,刚安装的会有sys用户,sys用户是数据库的拥有者,可以授予其他用户DBA角色。

     

    --sysdba的权限

    select * from DBA_ROLES where role like ‘SYSDBA';

     得到结果为空,因为SYSDBA这个角色根本不存在。

    --查看那些对象有dba权限

    Select * from dba_role_privs where granted_role like 'DBA';

    Select * from dba_role_privs where granted_role like 'SYSDBA';

    --查看那些用户有sysdba权限是通过 v$pwfile_users

    Select * from v$pwfile_users;

      得到的结果是具有DBA角色的用户。

      所有,具有DBA角色的用户,通过口令文件认证的。是将密码通过加密后存入密码文件中。

      问题: 如果密码忘记了怎么办?

      先将口令文件删除,然后重建。

      

  • 相关阅读:
    net.sf.jsqlparser.statement.select.PlainSelect.getGroupByColumnReferences()Ljava/util/List(版本问题)
    Netty ByteBuf
    Vertx session 使用须知
    用Vert.x shiro jdbcRealm对restful api鉴权
    Vert.x发送 HTTP/HTTPS请求及重定向
    解决“hao123”劫持浏览器主页
    cannot find module bcrypt_lib.node
    nodejs运行项目报错TypeError: db.collection is not a function
    [Java] Stream flatMap
    [Spring Security] Authotization
  • 原文地址:https://www.cnblogs.com/jerryxing/p/2437986.html
Copyright © 2011-2022 走看看