oracle验证口令方式,oracle中os认证,参数remote_login_passwordfile,口令文件(转)

1、os认证

oracle安装之后默认情况下是启动os认证。os认证的意思是把登录到数据库的用户和口令校验放在了操作系统一级。如果以安装oracle时的用户登录os

,那么登录oracle数据库时不需要任何验证如:

SQL> conn test/oracle as

sysdba

Connected.

SQL> conn test/oracle@orcl as sysdba

Connected.

SQL> conn /as sysdba

Connected.

SQL> conn ss/ss as sysdba

Connected.

SQL> conn ss/ss@orcl as sysdba

Connected.

SQL> conn test/ss@orcl as sysdba

Connected.

SQL> conn test/oracle@orcl as sysdba

Connected.

不论输入什么用户,那怕该用户不存在,只要一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_passwordfile

REMOTE_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权限的连接数据的用户,使用口令文件的好处就是,在数据关闭的情况下,依然可以通过口令文件验证来连接数据库。客户端要以sysdba登录数据库也必须使用口令文件。默认路径是(oracle_home/database/pwdsid.ora)

(1)口令文件用户的查看,添加,删除

SQL> select * from

v$pwfile_users;

USERNAME SYSDB SYSOP

------------------------------ ----- -----

SYS TRUE TRUE

TEST TRUE FALSE

SQL> revoke sysdba from

test;

Revoke succeeded.

SQL> select * from

v$pwfile_users;

USERNAME SYSDB SYSOP

------------------------------ ----- -----

SYS TRUE TRUE

SQL> grant sysdba to

test;

Grant succeeded.

SQL> select * from

v$pwfile_users;

USERNAME SYSDB SYSOP

------------------------------ ----- -----

SYS TRUE TRUE

TEST TRUE FALSE

(2)口令文件的建立

C:\ >ORAPWD FILE=<

FILENAME > PASSWORD

=< PASSWORD > ENTRIES=< MAX_USERS

> FORCE=

---- 各命令参数的含义为:

---- FILENAME:密码文件名;

---- PASSWORD:设置INTERNAL/SYS帐号的口令;

---- MAX_USERS:密码文件中可以存放的最大用户数

-----force:默认值是n,他的作用类似也创建表空间时的reuse

(3)sys密码丢失的处理办法

首先要保证remote_login_passwordfile=shared

1).查询视图V$PWFILE_USERS,select * from

V$PWFILE_USERS;

记录下拥有 SYSOPER/SYSDBA 系统权限的用户 信息

2).关闭数据库 shutdown immediate

3).删除密码文件,文件路径一般为:ORACLE_HOME\DATABASE,文件名为 PWD.ORA

4).创建密码文件

ORAPWD FILE=< FILENAME > PASSWORD =< PASSWORD >

5).向密码文件中增加用户

CONNECT SYS/internal_user_passsword AS SYSDBA;

启动数据库实例并打开数据库; 创建相应用户帐号,对其授权

授予 权限:GRANT SYSDBA TO user_name(如果先前数据库

只有sys具有sysdba权限,可不做这步)

6).修改密码文件状态,默认密码文件的状态shared,要将初始化参数里的

REMOTE_LOGIN_PASSWORDFILE 设置成EXCLUSIVE

SQL> alter system set

remote_login_passwordfile=exclusive

scope=spfile;

4、总结

从上面的分析可以看出,当以sysdba/sysoper登录数据库时,主要是有sqlnet.ora,口令文件,参数remote_login_passwordfile

决定的,所以

当SQLNET.AUTHENTICATION_SERVICES=(NONE),REMOTE_LOGIN_PASSWORDFILE=(NONE)是一定不可以以sysdba登录数据库的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值