为什么任何随便输入的账号使用SYSDBA权限都能登陆oracle
2010-07-22 15:10
344 查看
其实简单点就是检查一下你的机器有没有一个ora_dba用户组,而且你登陆os的用户是否在这个组里,有的话问题的原因就找到了,下面是转的高手的介绍
本文环境配置:Oracle10gR2,Windows XP
Oracle的用户信息一般来说是保存在数据字典里的,所以常规用户在Oracle数据库没有启动的时候是无法登陆的。但有两类用户例外,这就是具有sysdba或者sysoper权限的用户。Oracle sysdba或者sysoper用户的登陆有两种方式:一是通过OS认证,二是通过密码文件验证。
究竟使用哪一种验证方式以及能否成功登陆取决于三个方面的因素:
1. sqlnet.ora中SQLNET.AUTHENTICATION_SERVICES的设置
2. 参数文件中REMOTE_LOGIN_PASSWORDFILE的设置
3. 密码文件 PWD%sid%.ora
Oracle进行权限验证的大致顺序如下:
1. 根据SQLNET.AUTHENTICATION_SERVICES的值决定是进行os验证还是密码文件验证。
2. 如果是os验证,根据当前用户的用户组判断是否具有sysdba权限。如果os验证失败,则进行密码文件验证。
2. 如果是密码文件验证,REMOTE_LOGIN_PASSWORDFILE的值以及密码文件是否存在决定了验证是否成功。
1. OS 验 证
要启用os验证,就必须在qlnet.ora中设置SQLNET.AUTHENTICATION_SERVICES=(NTS),然后在Windows中建立ora_dba用户组,把相关用户加入到这个组中(e.g., administrator),这样administrator就可以在不用提供用户名和密码(或者提供任意的用户名和密码)的情况下以sysdba身份本地登陆。因为操作系统已经代替Oracle进行了验证。
测试一:ora_dba用户本地登陆
Sql代码
C:/>sqlplus / as sysdba
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the OLAP and Data Mining options
SQL>
C:/>sqlplus wrong_user/wrong_password as sysdba
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the OLAP and Data Mining options
SQL>
测试二:非ora_dba用户本地登陆
Java代码
C:/>sqlplus / as sysdba
ERROR:
ORA-01031: insufficient privileges
Enter user-name:
C:/>sqlplus wrong_user/wrong_password sysdba
ERROR:
ORA-01017: invalid username/password; logon denied
Enter user-name:
C:/>sqlplus sys/change_on_install as sysdba
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the OLAP and Data Mining options
SQL>
2. 密码文件验证
密码文件包含了被授予sysdba和sysoper权限的用户的用户名和密码。这是一个加密文件,一般来说存放在%oracle_home%/database目录下,文件名为PWD%sid%.ora。
如果要使用密码文件验证,则把sqlnet.ora改为SQLNET.AUTHENTICATION_SERVICES=none,或者从sqlnet.ora中删除SQLNET.AUTHENTICATION_SERVICES。同上匿名登陆sqlplus会失败,给出用户名和密码就可以成功登陆。
Sql代码
C:/>sqlplus / as sysdba
ERROR:
ORA-01031: insufficient privileges
Enter user-name:
C:/>sqlplus sys/change_on_install as sysdba
Connected to an idle instance.
idle>
测试一:删除密码文件。使用用户名和密码登陆,失败!
Sql代码
C:/>sqlplus sys/change_on_install as sysdba
ERROR:
ORA-01031: insufficient privileges
Enter user-name:
测试二:恢复密码文件,设置REMOTE_LOGIN_PASSWORDFILE=none。使用用户名和密码登陆,失败!
Sql代码
SQL> alter system set remote_login_passwordfile=none scope=spfile;
System altered.
C:/>sqlplus sys/change_on_install as sysdba
ERROR:
ORA-01017: invalid username/password; logon denied
Enter user-name:
测试三:恢复密码文件,设置REMOTE_LOGIN_PASSWORDFILE为EXCLUSIVE或者SHARED。使用用户名和密码登陆,成功!
Sql代码
SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;
System altered.
C:/>sqlplus sys/change_on_install as sysdba
Connected to an idle instance.
SQL>
3. 密码文件
查看具有sysdba或者sysoper权限的用户:
Sql代码
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ------- -------
SYS TRUE TRUE
每次使用grant sysdba/sysoper授予新用户特殊权限或是alter user命令修改拥有sysdba/sysoper权限的用户密码的时候,Oracle都会自动的同步密码文件,这样保证在数据库没有打开的情况拥有特殊权限的用户能正常的登陆数据库以进行管理操作。
Sql代码
SQL> grant sysdba to logicgate;
Grant succeeded.
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------- -------- --------
SYS TRUE TRUE
LOGICGATE TRUE FALSE
使用orapwd命令可以重建密码文件。
Java代码
C:/>orapwd
Usage: orapwd file=<fname> password=<password> entries=<users> force=<y/n>
where
file - name of password file (mandatory),
password - password for SYS (mandatory),
entries - maximum number of distinct DBA (optional),
force - whether to overwrite existing file (optional)
其中文件名和密码是必需的。entries设置了密码文件可包含的dba用户的最大数目。force定义了是否覆盖当前文件。重建密码文件会清除系统内除了sys用户以外所有sysdba用户的密码。必须使用grant sysdba同步密码文件。
Java代码
C:/>orapwd file=%oracle_home%/database/PWDepcit.ora password=temp entries=20 force=y;
C:/>sqlplus sys/temp as sysdba
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the OLAP and Data Mining options
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------- -------- --------
SYS TRUE TRUE
本文环境配置:Oracle10gR2,Windows XP
Oracle的用户信息一般来说是保存在数据字典里的,所以常规用户在Oracle数据库没有启动的时候是无法登陆的。但有两类用户例外,这就是具有sysdba或者sysoper权限的用户。Oracle sysdba或者sysoper用户的登陆有两种方式:一是通过OS认证,二是通过密码文件验证。
究竟使用哪一种验证方式以及能否成功登陆取决于三个方面的因素:
1. sqlnet.ora中SQLNET.AUTHENTICATION_SERVICES的设置
2. 参数文件中REMOTE_LOGIN_PASSWORDFILE的设置
3. 密码文件 PWD%sid%.ora
Oracle进行权限验证的大致顺序如下:
1. 根据SQLNET.AUTHENTICATION_SERVICES的值决定是进行os验证还是密码文件验证。
2. 如果是os验证,根据当前用户的用户组判断是否具有sysdba权限。如果os验证失败,则进行密码文件验证。
2. 如果是密码文件验证,REMOTE_LOGIN_PASSWORDFILE的值以及密码文件是否存在决定了验证是否成功。
1. OS 验 证
要启用os验证,就必须在qlnet.ora中设置SQLNET.AUTHENTICATION_SERVICES=(NTS),然后在Windows中建立ora_dba用户组,把相关用户加入到这个组中(e.g., administrator),这样administrator就可以在不用提供用户名和密码(或者提供任意的用户名和密码)的情况下以sysdba身份本地登陆。因为操作系统已经代替Oracle进行了验证。
测试一:ora_dba用户本地登陆
Sql代码
C:/>sqlplus / as sysdba
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the OLAP and Data Mining options
SQL>
C:/>sqlplus wrong_user/wrong_password as sysdba
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the OLAP and Data Mining options
SQL>
C:/>sqlplus / as sysdba Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the OLAP and Data Mining options SQL> C:/>sqlplus wrong_user/wrong_password as sysdba Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the OLAP and Data Mining options SQL>
测试二:非ora_dba用户本地登陆
Java代码
C:/>sqlplus / as sysdba
ERROR:
ORA-01031: insufficient privileges
Enter user-name:
C:/>sqlplus wrong_user/wrong_password sysdba
ERROR:
ORA-01017: invalid username/password; logon denied
Enter user-name:
C:/>sqlplus sys/change_on_install as sysdba
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the OLAP and Data Mining options
SQL>
C:/>sqlplus / as sysdba ERROR: ORA-01031: insufficient privileges Enter user-name: C:/>sqlplus wrong_user/wrong_password sysdba ERROR: ORA-01017: invalid username/password; logon denied Enter user-name: C:/>sqlplus sys/change_on_install as sysdba Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the OLAP and Data Mining options SQL>
2. 密码文件验证
密码文件包含了被授予sysdba和sysoper权限的用户的用户名和密码。这是一个加密文件,一般来说存放在%oracle_home%/database目录下,文件名为PWD%sid%.ora。
如果要使用密码文件验证,则把sqlnet.ora改为SQLNET.AUTHENTICATION_SERVICES=none,或者从sqlnet.ora中删除SQLNET.AUTHENTICATION_SERVICES。同上匿名登陆sqlplus会失败,给出用户名和密码就可以成功登陆。
Sql代码
C:/>sqlplus / as sysdba
ERROR:
ORA-01031: insufficient privileges
Enter user-name:
C:/>sqlplus sys/change_on_install as sysdba
Connected to an idle instance.
idle>
C:/>sqlplus / as sysdba ERROR: ORA-01031: insufficient privileges Enter user-name: C:/>sqlplus sys/change_on_install as sysdba Connected to an idle instance. idle>
测试一:删除密码文件。使用用户名和密码登陆,失败!
Sql代码
C:/>sqlplus sys/change_on_install as sysdba
ERROR:
ORA-01031: insufficient privileges
Enter user-name:
C:/>sqlplus sys/change_on_install as sysdba ERROR: ORA-01031: insufficient privileges Enter user-name:
测试二:恢复密码文件,设置REMOTE_LOGIN_PASSWORDFILE=none。使用用户名和密码登陆,失败!
Sql代码
SQL> alter system set remote_login_passwordfile=none scope=spfile;
System altered.
C:/>sqlplus sys/change_on_install as sysdba
ERROR:
ORA-01017: invalid username/password; logon denied
Enter user-name:
SQL> alter system set remote_login_passwordfile=none scope=spfile; System altered. C:/>sqlplus sys/change_on_install as sysdba ERROR: ORA-01017: invalid username/password; logon denied Enter user-name:
测试三:恢复密码文件,设置REMOTE_LOGIN_PASSWORDFILE为EXCLUSIVE或者SHARED。使用用户名和密码登陆,成功!
Sql代码
SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;
System altered.
C:/>sqlplus sys/change_on_install as sysdba
Connected to an idle instance.
SQL>
SQL> alter system set remote_login_passwordfile=exclusive scope=spfile; System altered. C:/>sqlplus sys/change_on_install as sysdba Connected to an idle instance. SQL>
3. 密码文件
查看具有sysdba或者sysoper权限的用户:
Sql代码
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ------- -------
SYS TRUE TRUE
SQL> select * from v$pwfile_users; USERNAME SYSDB SYSOP ------------------------------ ------- ------- SYS TRUE TRUE
每次使用grant sysdba/sysoper授予新用户特殊权限或是alter user命令修改拥有sysdba/sysoper权限的用户密码的时候,Oracle都会自动的同步密码文件,这样保证在数据库没有打开的情况拥有特殊权限的用户能正常的登陆数据库以进行管理操作。
Sql代码
SQL> grant sysdba to logicgate;
Grant succeeded.
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------- -------- --------
SYS TRUE TRUE
LOGICGATE TRUE FALSE
SQL> grant sysdba to logicgate; Grant succeeded. SQL> select * from v$pwfile_users; USERNAME SYSDB SYSOP ------------------------------- -------- -------- SYS TRUE TRUE LOGICGATE TRUE FALSE
使用orapwd命令可以重建密码文件。
Java代码
C:/>orapwd
Usage: orapwd file=<fname> password=<password> entries=<users> force=<y/n>
where
file - name of password file (mandatory),
password - password for SYS (mandatory),
entries - maximum number of distinct DBA (optional),
force - whether to overwrite existing file (optional)
C:/>orapwd Usage: orapwd file=<fname> password=<password> entries=<users> force=<y/n> where file - name of password file (mandatory), password - password for SYS (mandatory), entries - maximum number of distinct DBA (optional), force - whether to overwrite existing file (optional)
其中文件名和密码是必需的。entries设置了密码文件可包含的dba用户的最大数目。force定义了是否覆盖当前文件。重建密码文件会清除系统内除了sys用户以外所有sysdba用户的密码。必须使用grant sysdba同步密码文件。
Java代码
C:/>orapwd file=%oracle_home%/database/PWDepcit.ora password=temp entries=20 force=y;
C:/>sqlplus sys/temp as sysdba
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the OLAP and Data Mining options
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------- -------- --------
SYS TRUE TRUE
C:/>orapwd file=%oracle_home%/database/PWDepcit.ora password=temp entries=20 force=y; C:/>sqlplus sys/temp as sysdba Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the OLAP and Data Mining options SQL> select * from v$pwfile_users; USERNAME SYSDB SYSOP ------------------------------- -------- -------- SYS TRUE TRUE
相关文章推荐
- 为什么任何随便输入的账号使用SYSDBA权限都能登陆oracle
- oracle 为什么任何用户都能以SYSDBA登陆 即使用户名和密码都为空也能进入
- ORACLE官网下载登陆账号能够使用
- 非Oracle用户使用操作系统验证登陆(/ as sysdba)
- 在windows 下为什么可以使用 sqlplus / as sysdba 进入到oracle中。
- 解决Oracle安装完成后,随便输入用户名密码只要选择DBA身份就能登陆进去的问题
- ORACLE官网下载登陆账号可以使用
- 已有使用Key登陆机器,创建新账号并使用新Key登陆
- oracle view 跨用户使用权限问题
- 下次登陆自动输入账号密码
- centos6.5_x64远程链接输入正确的账号密码无法登陆
- 使用触发器记录oracle用户登陆信息
- 使用Navicat for Oracle新建表空间、用户及权限赋予---来自烂泥
- 分享解决方法:为什么QQ聊天框中无法使用输入法输入中文?
- SYSDBA登陆权限问题
- oracle登陆需要sysdba,但又需要制定数据库实例
- Oracle 10g、11g 调度程序dbms_scheduler及使用时权限
- 破解android的root权限的本质是:在系统中加入一个任何用户都可能用于登陆的su命令。或者说替换掉系统中的su程序,因为系统中的默认su程序需要验证实际用户权限,只有root和 shell用户才
- dede输入正确账号密码转向登陆时出现空白的问题分析
- oracle用SQL Plus输入命令为什么只显示2