数据库管理员权限认证&&密码文件的创建和管理
一、数据库管理员权限认证
oracle最常用的账户认证方式是数据字典认证方式,从11gR1开始,密码是大小写敏感的了。可以通过将sec_case_sensitive_logon参数设置为false来禁用该特性。
除数据字典方式认证外,还包括密码文件认证、操作系统权限认证以及基于网络的认证服务器,比如oracle internet directory。
这些方法代替了以前的内部认证方式“connect internal”。
操作系统认证发生在密码文件认证之前。如果符合操作系统认证要求了,就是使用密码文件,也还是会选择操作系统认证的方式。
认证方式的选择应该考虑到连接是否安全。
如果在远程进行数据库管理时,使用的是安全的连接协议,就可以使用操作系统认证方式。但对于比较流行的协议,如TCP/IP、DECnet,都是不安全的。
对于不安全的远程连接方式,必须使用密码文件认证方式。这时,数据库在密码文件中保留了已经授予sysdba或sysoper权限的数据库用户的用户名。
对于本地连接和安全的远程连接,用有权限的用户直接登录:
如果有密码文件,并且你已经被赋予sysdba或sysoper权限,可以通过密码文件连接和认证;
如果服务器未使用密码文件或者由于没有被授予sysdba、sysoper权限而不再密码文件中,可以使用操作系统认证方式。
在大多数系统中,dba权限认证包括将dba放到特定的组中,通常是OSDBA组。该组中的用户被授予了sysdba权限。类似地OSOPER组是给用户授予了sysoper的组。
1.使用操作系统认证方式
OSDBA和OSOPER组中的成员可以使dba通过操作系统认证,而不需要用户名和密码的方式。(操作系统认证方式)
这两个组是oracle安装时创建的,默认成员取决于操作系统。在unix系统中分别是组dba、oper,在windows中是ora_dba、ora_oper。
2.使用密码文件认证方式
1)在未创建的情况下,可以使用orapwd命令创建密码文件:
orapwd file=
注意两点:
使用dbca创建数据库时,会自动创建密码文件
11gR1开始,密码大小写敏感,可以使用在以上命令中使用ignorecase=Y禁用
2)设置remote_login_passwordfile参数为execlusive(默认)
3)以sys或其他管理员权限用户连接数据库
4)如果不存在该用户,创建并指定密码
5)授权:grant sysdba to xxxx;
二、密码文件的创建和管理
1.用orapwd创建密码文件
ORAPWD FILE=filename [ENTRIES=numusers] [FORCE={Y|N}] [IGNORECASE={Y|N}]
其中file是文件的完整路径和名称
entries表示该文件中允许的最大用户数量
force=y表示强制重写已存在的密码文件
ignorecase确认是否大小写敏感
需要注意,在等号两侧不允许有空格。
密码文件名称:
unix/linux: ORACLE_HOME/dbs/orapwORACLE_SID
Windows : ORACLE_HOME\database\PWDORACLE_SID.ora
2.密码文件的共享号禁用
remote_login_passwordfile参数控制密码文件是否可以在多个实例间共享。该参数也可以用于禁用密码文件认证。
remote_login_passwordfile的可选值为:
NONE oracle认为密码文件不存在,也就是说不安全的连接不能连接到数据库。
EXCLUSIVE 默认选项,只能用于一个实例。只有EXCLUSIVE文件可以被修改。使用该选项,可以增、删、该用户,可以用alter user命令修改sys密码。
SHARED 可以被相同服务器的多个数据库共用,或RAC的多个实例共用。不能被修改、增加用户。
必须将所有需要sysdba或sysoper操作系统权限的用户都加到密码文件中,然后将remote_login_passwordfile由exclusive改为shared,并共享该文件。
在管理多个数据库或者RAC时使用该选项。
如果remote_login_passwordfile参数设置为exclusive或shared,但密码文件丢失,则等价于设置为了NONE。
如果将该参数由none改为shared或exclusive,或者用不同的sys密码重建了该文件,就必须确保数据字典中的密码和sys用户的密码相同。
要同步sys密码,可以使用alter user语句修改sys密码。alter user语句会将数据字典和密码文件的密码都更新。
要同步拥有sysdba或sysoper的非sys用户的密码,需要收回并重新授予权限,如:
SELECT USERNAME FROM V$PWFILE_USERS WHERE USERNAME != 'SYS' AND SYSDBA='TRUE'; (查看)
REVOKE SYSDBA FROM non-SYS-user;(收回)
GRANT SYSDBA TO non-SYS-user;(授予)
3.增加用户到密码文件
当给某个用户授予sysdba或sysoper权限时,用户名和权限信息被增加到密码文件中。
如果服务器没有exclusive的密码文件,授权时就会报错。
由于sysdba和sysoper是非常高的权限,其grant语句中不建议使用with admin option选项。
只有当前以sysdba登录的用户才能给其他用户授予或收回sysdba、sysoper权限。
该权限不能授予角色,因为角色是在数据库启动后才生效的。
在v$pwfile_users视图中可以看到sysdba、sysoper或sysasm权限的用户信息。
4.密码文件的维护
1)替换密码文件
查询v$pwfile_users找到sysdba、sysoper权限的用户
删除当前的密码文件
创建新的密码文件,确保entries参数足够大
2)删除密码文件
直接将密码文件物理删除即可。删除后,只有能被操作系统识别的sysdba、sysoper权限用户能进行相应操作。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·
实练:
由于oracle在进行账户认证时是先采用操作系统认证方式的,无论用户名和密码是什么,都可以sysdba权限登录。
因此,需要先将操作系统认证方式禁用,再去测试密码方式才有意义。
禁用的方法比较简单,将sqlnet.ora中的
SQLNET.AUTHENTICATION_SERVICES= (NTS)
改为
SQLNET.AUTHENTICATION_SERVICES= (NONE)
修改前登录:
D:\Documents and Settings\tian>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 7月 15 16:53:13 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba
已连接。
修改后登录:
SQL> conn /as sysdba
ERROR:
ORA-01031: insufficient privileges
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我的环境中密码文件在:
D:\oracle10g\database\PWDtest.ora
将此文件改名。
然后登录并查看数据库:
SQL> conn sys/sys@test as sysdba
Connected to Oracle Database 10g Release 10.2.0.1.0
Connected as SYS
SQL> select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER
------------------------------ ------ -------
可以看到,10g中只有sysdb和sysoper两个属性列。11g应该还有sysasm。
因为sys是系统能识别的sysdba权限用户,即使密码文件删了,依赖可以用它登录。
但如果是以前设置的远程操作系统用户,可能就不行了。
下面重建:
SQL> exit
从 Oracle Database 10g Release 10.2.0.1.0 - Production 断开
D:\Documents and Settings\tian>orapwd file=D:\oracle10g\database\PWDtest.ora pas
sword=tianlei ENTRIES=5 IGNORECASE=Y
Usage: orapwd file=
where
file - name of password file (mand),
password - password for SYS (mand),
entries - maximum number of distinct DBA and force - whether to overwrit
e existing file (opt),
OPERs (opt),
There are no spaces around the equal-to (=) character.
--以上是由于10g环境没有ignorecase选项造成的
D:\Documents and Settings\tian>orapwd file=D:\oracle10g\database\PWDtest.ora pas
sword=tianlei ENTRIES=5
--登录后再次查询:
D:\Documents and Settings\tian>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 7月 15 16:12:34 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba
已连接。
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
SQL> grant sysdba to scott;
Grant succeeded
SQL> grant sysoper to terry ;
Grant succeeded
SQL> select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER
------------------------------ ------ -------
SYS TRUE TRUE
SCOTT TRUE FALSE
TERRY FALSE TRUE
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26451536/viewspace-766312/ ,如需转载,请注明出处,否则将追究法律责任。