ORACLE 用户权限(1)-数据库安全认证模式

ORACLE 用户权限(1)-数据库安全认证模式

(1)OS认证

OS认证简介

​ oracle中,可以将新建立用户或者把原来的用户加入到oinstall组或dba等组中,然后使用这个用户在安装了数据库的本地机器登陆或者使用安全的远程连接登陆,可以作为sysdba登录,在数据库级则不需要提供密码。

​ 比如,我们使用sqlplus登陆数据库:

sqlplus / as sysdba

​ 不需要密码,这里linux安装了oracle之后,默认自带OS认证,查看当前用户属组:

​ 当前用户,在oinstall和dba属组中,所以可以通过OS认证,不需要口令直接登陆,但是当我们连接hr用户时,则会提示输入密码:

修改OS认证配置文件-sqlnet.ora

​ 配置文件位于$ORACLE_HOME/network/admin目录下,(没有新建一个),LINUX下默认是支持OS认证和口令(密码)认证的所以不需要修改sqlnet.ora,如果是WINDOWS NT系统,则需要添加以下配置:

SQLNET.AUTHENTICATION_SERVICES=(NTS)  
关闭OS认证
  • 把操作系统用户的dba组oinstall组取消
  • 修改sqlnet.ora文件
SQLNET.AUTHENTICATION_SERVICES = (NONE)

待修改配置文件后,发现OS认证已关闭,需要验证口令才能登陆。

(2)口令认证

​ Oracle的口令文件的作用是存放所有以sysdba或者sysoper权限连接数据库的用户的口令,如果想以sysdba权限远程连接数据库,必须使用口令文件。

​ oracle口令文件存放目录:

修改口令文件
orapwd file=$ORACLE_HOME/dbs/orapw$ORACL_SID password=密码 force=y

此时可能会出现错误,因为ORACLE12.2以后增强了密码强度的要求,但是如果您依旧想使用短密码的话可以写成:

orapwd file=$ORACLE_HOME/dbs/orapworcl password=密码 force=y format=12 
//format=12使用12.2之前的密码验证模式

修改密码
  • 通过修改口令文件

  • 改回到os认证模式,进入到sys用户下,使用如下命令修改密码

如果修改失败,可能是REMOTE_LOGIN_PASSWORDFILE参数的原因,通过命令查看该参数值:

show  parameter REMOTE_LOGIN_PASSWORDFILE

REMOTE_LOGIN_PASSWORDFILE参数详解

​ REMOTE_LOGIN_PASSWORDFILE参数可以有三种取值:EXCLUSIVE(默认)、NONE和SHARED。

  • EXCLUSIVE

    • 允许客户端以SYSDBA或SYSOPER权限登录到数据库实例中完成数据库管理操作;
    • 允许授予和回收SYSDBA或SYSOPER权限。
  • NONE

    • 禁止客户端以SYSDBA或SYSOPER权限登录到数据库实例中完成数据库管理操作;

    • 禁止授予和回收SYSDBA或SYSOPER权限。

  • SHARED

    • 允许客户端以SYSDBA或SYSOPER权限登录到数据库实例中完成数据库管理操作;
    • 禁止授予和回收SYSDBA或SYSOPER权限。

    修改密码也算权限范围内。所以如果通过用户修改密码,失败请不要慌,查看该参数值。

REMOTE_LOGIN_PASSWORDFILE参数修改

示例: alter system set remote_login_passwordfile=exclusive scope=spfile;

​ 修改完后,请重启数据库:

shutdown immediate
startup

​ 再次查看参数值!然后修改密码,成功!

posted @ 2020-10-29 15:35  只有牙  阅读(416)  评论(0)    收藏  举报