密码文件属于database的一部分
密码文件的作用:DBA用户的身份认证
当具有sysdba和sysoper的权限的时候就是dba 用户
默认情况下
sysdba就是sys,他的权限最大
sysoper就是system
登录Oracle数据库可以有两种身份验证的方法
(1)使用操作系统集成的身份验证
(2)使用Oracle数据库的密码文件进行身份验证
他们连个的应用场景
if 本地登录
(1)使用操作系统认证
(2)密码文件认证
[[email protected] dpdump]# id oracle
uid=1101(oracle) gid=1000(oinstall) 组=1000(oinstall),1300(dba),1301(oper)
我们看到oracle 用户是属于dba这个组的,所以具备dba这个组的权限的,默认情况下他具备了操作系统的权限,可以不适用密码就可以登录了(使用操作系统里的用户名和密码,然后就可以进去了)
sqlplus / as sysdba
SQL> 这种情况下我们就是用sys用户登陆进来的
SQL> show user
USER is "SYS"
什么是密码文件认证
密码文件目录$ORACLE_HOME/dbs
密码文件是$ORACLE_HOME/dbs/orapw<SID>
下面的 orapwesbtest就是esbtest这个实例的密码文件
比如说我现在给这个密码文件删除了,我们来看看
[[email protected] dbs]$ sqlplus sys/[email protected] as sysdba
如果密码文件被删除了,则创建一个密码文件
比如这里的 orapwesbtest 密码文件丢失了,我们用下面的这个方法生成密码文件
orapwd file= orapwesbtest password=yizhenuplooking entries=1
决定是密码文件认证还是OS认证,由两个参数决定
参数(1)
remote/login/passwordfile=none|exclusive|shared
none 不适用密码问津啊认证
execlusive 要密码文件认证,自己独占使用(这个是默认的)
shared 要密码文件认证,不同的实例dba用户可以共享文件
要是有密码文件认证,则sys用户就不能远程登录了
参数(2)
$ORACLE_HOME/network/admin/sqlnet.ora
文件里面添加下面这一行
SQLNET.AUTHENTCICATION_SERVICES=none|all|nts
none 代表关闭操作系统认证,只能密码认证
all 用于linux/unix平台,关闭本机密码文件认证,采用操作系统认证,但是远程(不是自己的机器)可以使用密码文件认证,但是本机是不可以登陆的
nts 是windows 平台的,暂时不做讨论
这两个参数可以配合使用,不同的搭配,会有不同的效果
密码文件的管理:
密码文件的额建立:
看一下怎么使用的 orapwd
Usage: orapwd file=<fname> entries=<users> force=<y/n> ignorecase=<y/n> nosysdba=<y/n>
where
file - name of password file (required),密码文件的名字orapw<SID>
password - password for SYS will be prompted if not specified at command line,sys用户的密码
entries - maximum number of distinct DBA (optional),可以有多少个sysdba,sysoper权限用户放到密码文件中去,实际可以放的用户密码文件比这个数大
force - whether to overwrite existing file (optional), force 默认为n,也可以问为y,是否覆盖原有的密码文件
ignorecase - passwords are case-insensitive (optional),
nosysdba - whether to shut out the SYSDBA logon (optional Database Vault only).
There must be no spaces around the equal-to (=) character.
密码文件的修改:
(1)orapwd 建立密码文件(不建议使用)
(2)alter user sys identified by
(3) grant sysdba to 用户
(4)grant sysoper to 用户
(5)revoke sysdba|sysoper from 用户
上面都会使密码文件产生变化
比如说我现在不记得我的sys用户的密码,这个时候我么可以先通过操作系统认证的方式进入
sqlplus / as sysdba
alter user sys identified by 12334234;
比如说我们现在想让一个普通用户拥有部分sysdba的权限
conn / as sysdba;
create user bao identified by yizhenuplooking;
SQL> grant sysdba to bao;
Grant succeeded.
我们可以使用密码认证进行登录
sqlplus bao/[email protected] as sysdba;
普通用户bao 拥有了sys的权限,但是默认请款下不是bao而是sys用户,可以使用show user看一下,因为你就是用sys用户的权限登录进来的,所以默认情况下是sys用户
看下sysdba 和 sysoper到底有什么区别,他们两个都是系统权限
sysdba 是帮派老大
sysoper 是帮派二当家
怎么查看我当前用户有哪些权限呢?比如说查看当前系统哪些是具有sysdba权限的额,哪些是具有sysoper权限的
我们可以查看密码文件的视图,这个要在sysdba用户下才能查看
conn / as sysdba;
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP SYSAS
------------------------------ ----- ----- -----
SYS TRUE TRUE FALSE
BAO TRUE FALSE FALSE
S1 FALSE TRUE FALSE
总结:
(1)密码文件的作用
(2)密码文件的位置
(3)密码文件的查找先后顺序
首先查找orapw<SID>,找不到在找orapwd的,都找不到则密码认证失败
(4)dba用户的认证方式 系统认证和密码文件认证,什么时候用什么认证方式,由两个参数决定
(5)密码文件的建立
(6)密码文件的修改的方式
(7)当sys密码不对的时候,最好不要给他删除重新建立,我么应该用系统认证方式进入之后用alter user sys 的方式修改密码,如果密码文件没有了或者是损坏了,只有重新建立了
今天的作业:
1.组合时候使用两个认证登陆方式的参数,看看会有什么效果,从而总结出,关闭OS认证,密码文件,关闭本地密码文件,关闭远程密码文件怎么做
2.