oracle服务端登陆方式,Oracle的登陆认证方式精简总结

本文详细介绍了Oracle数据库的三种认证方式:操作系统认证、密码文件认证和字典认证。包括如何启用、禁用以及操作步骤,如创建和修改密码文件,以及通过SQL命令管理用户权限。同时,文章强调了不同认证方式的安全性和使用场景。
摘要由CSDN通过智能技术生成

本帖最后由 zcs0237 于 2013-8-13 14:10 编辑

a.欢迎对本帖补充、建议、更正

b.测试环境rhel5.4+Ora10.2.0.1.0

c.为节省篇幅,部分输出结果做了精简

************************************************第01部分 服务器端OS认证(默认启用)

01.1-以安装Oracle的用户登录OS

不论输入什么用户,只要以sysdba权限连接数据库,都可以连接上,并且连接用户是sys。

有时候,如果忘记了数据库的密码,而又想登录数据库,可以通过这种方式,前提是在数据库服务器上。

SQL> connect /  as sysdba

Connected.

SQL> connect sys/aaa  as sysdba

Connected.

SQL> connect sys/bbb  as sysdba

Connected.

SQL> connect aaa/bbb  as sysdba

Connected.    //哪怕这个用户如aaa在数据库中根本不存在

SQL> show user

USER is "SYS"

SQL> alter   user   sys   identified   by   install;

User altered.

SQL> connectsys/install@192.168.188.128:1521/orcl

ORA-28009: connection as SYS should be as SYSDBA or SYSOPER

SQL> connectsys/install@192.168.188.128:1521/orclas sysdba

Connected.

SQL> show user

USER is "SYS"

01.2-以非安装oracle用户登录OS

# su – oracle

$ sqlplus / as sysdba

SQL> show parameter auth

NAME               TYPE        VALUE

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

os_authent_prefix  string      ops$

remote_os_authent  boolean     FALSE

SQL> create user ops$zcs1 identified by oracle;

User created.

SQL> exit

Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0

$exit

# useradd -g oinstall -G dba zcs1

# echo oracle|passwd --stdin zcs1

# su - zcs1

$ export ORACLE_SID=orcl

$ export ORACLE_BASE=/u01/app/oracle

$ export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1

$ export PATH=$ORACLE_HOME/bin:$PATH

$ sqlplus / as sysdba

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0

SQL>

01.3-屏蔽OS认证(以linux为例)

OS 认证有一定安全隐患,可以把相关系统用户删除,也可以修改sqlnet.ora文件。

在删除密码文件后,若想要以管理员身份连入数据库的话,则必须使用操作系统验证的方法进行登录。

$ cd $ORACLE_HOME/network/admin;ls sqlnet.ora

ls: sqlnet.ora: No such file or directory

$ echo 'SQLNET.AUTHENTICATION_SERVICES=(NONE)' > sqlnet.ora

$ sqlplus / as sysdba  //提示,需输入正常的用户名和密码

ORA-01031: insufficient privileges

Enter user-name:

$cd $ORACLE_HOME/network/admin

$mv sqlnet.ora sqlnet.ora.bak     //重新启动用OS认证

************************************************第02部分 密码文件认证

在Oracle中,用户如果要以特权用户身份(INTERNAL/SYSDBA/SYSOPER)登录Oracle数据库可以有两种身份验证的方法:

一、使用与OS集成的身份验证

OS认证意思把登录数据库的用户和口令校验放在了OS一级。

当sys密码不记得可以使用OS系统身份认证登陆到sqlplus,再使用alter user修改密码。

二、使用Oracle数据库的password file进行身份验证

由于仅被授予SYSOPER/SYSDBA系统权限的用户才存在于密码文件中,由此,向密码文件中增加或删除某一用户,实际上也就是对某一用户授予或收回SYSOPER/SYSDBA系统权限。

三、创建密码文件的命令

不管是在创建实例时自动创建的密码文件,还是使用手工创建的密码文件,都只包含INTERNAL/SYS用户的信息;

orapwd file=orapworcl password=oracle force=y

orapwd file=>

password=< sys用户的密码>

entries=

force=

02.1-创建密码文件

在实际开发中,要把操作系统验证给取消掉,那以后就会采用密码验证了。但是假如我们把密码忘记了,又如何解决呢:重新生成密码文件即可。

一、使用orapwd建立,修改密码文件

$ cd $ORACLE_HOME/network/admin

$ mv sqlnet.ora.bak sqlnet.ora

$ strings sqlnet.ora

SQLNET.AUTHENTICATION_SERVICES=(NONE)

$ sqlplus / as sysdba

ORA-01031: insufficient privileges

Enter user-name:

$ cd $ORACLE_HOME/dbs

$ ls orapw*

orapworcl

$ strings orapworcl|grep -i test

TEST

$ orapwd file=orapworcl password=redhat         //重建密码文件修改密码

OPW-00005: File with same name exists - please delete or rename

$ orapwd file=orapworcl password=oracle force=y //改密码

$ strings orapworcl|grep -i test

$ sqlplus sys/oracle as sysdba

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0

二、扩展密码文件的用户数量

当向密码文件添加的帐号数目超过创建密码文件时所定的限制时,为扩展密码文件的用户数限制,需重建密码文件。

$ orapwd file=orapworcl password=redhat entries=1

$ strings $ORACLE_HOME/dbs/orapworcl

]\[Z

ORACLE Remote Password file

INTERNAL

F7AC0C5E9C3C37AB

E100B964899CDDDF

//INTERNAL是SYS用户名和SYSDBA权限的一个别名。

SQL> begin

for i in 1..6 loop

execute immediate 'create user u'||i||' identified by u'||i||'';

end loop;

end;

/

PL/SQL procedure successfully completed.

SQL> begin

for i in 1..6 loop

execute immediate 'grant sysdba to u'||i||'';

end loop;

end;

/

begin

*

ORA-01996: GRANT failed: password file '' is full

ORA-06512: at line 3

SQL> host strings $ORACLE_HOME/dbs/orapworcl

]\[Z  //再次查看orapworcl发现多出了行,该二进制文件按矩阵计算可存放多少

ORACLE Remote Password file

INTERNAL

F7AC0C5E9C3C37AB

E100B964899CDDDF

三、查看密码文件放了多少个sysoper/sysdba用户

可以通过查询视图V$PWFILE_USERS来获取拥有SYSOPER/SYSDBA系统权限的用户的信息,表中SYSOPER/SYSDBA列的取值TRUE/FALSE表示此用户是否拥有相应的权限。这些用户也就是相应地存在于密码文件中的成员。

SQL> select * from v$pwfile_users;

USERNAME                       SYSDB SYSOP

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

SYS                            TRUE  TRUE

zcs                            FALSE TRUE

U1                             TRUE  FALSE

U2                             TRUE  FALSE

U3                             TRUE  FALSE

02.2-使用密码认证

一、创建密码文件

$ cd /u01/app/oracle/product/10.2.0/db_1/dbs

$ orapwd file=orapworcl password=redhat force=y

$ strings orapworcl

]\[Z

ORACLE Remote Password file

INTERNAL

AB27B53EDC5FEF41

8A8F025737A9097A

二、开启密码文件认证

cd $ORACLE_HOME/network/admin;   //开启密码文件认证

echo 'SQLNET.AUTHENTICATION_SERVICES=(NONE)' > sqlnet.ora

三、通过授权sysdba,密码文件中增加scott的信息

REMOTE_LOGIN_PASSWORDFILE初始化参数文件中,此参数控制着密码文件的使用及其状态 (NONE:不使用密码文件,特权用户的登录通过OS进行身份验证) 。

1、SHARED(密码文件可多实例使用, 仅INTERNAL/SYS能特权登陆)

shared口令文件不能被编辑。即不能向shared口令文件增加用户。如果要增加用户或修改sysdba、sysoper用户的密码,需要设置REMOTE_LOGIN_PASSWORDFILE参数为exclusive然后再设置为shared。

SQL>alter system set remote_login_passwordfile=shared scope=spfile;

System altered.           //改为shared

SQL>startup force;

ORACLE instance started.  //为了使修改生效,重启数据库

SQL>alter user sys identified by system;

ERROR at line 1:          //修改sys用户的口令

ORA-28046: Password change for SYS disallowed

SQL>grant sysdba to scott;

ERROR at line 1:          //为scott用户授予sysdba权限

ORA-01999: password file cannot be updated in SHARED mode

2、EXCLUSIVE(只有一个数据库实例可以使用此密码文件)

只有在此设置下的密码文件可以包含有除INTERNAL/SYS以外的用户信息。

SQL>alter system set remote_login_passwordfile=exclusive scope=spfile;

System altered.          //改为exclusive

SQL> show parameter remote_login_passwordfile

remote_login_passwordfile     EXCLUSIVE

SQL>startup force;

ORACLE instance started.  // 为了使参数生效,重启数据库

SQL>alter user sys identified by system;

User altered.             // 修改sys用户的密码

SQL>grant sysdba to scott;

Grant succeeded.          //为scott用户授予sysdba权限

SQL> host strings orapworcl

]\[Z

ORACLE Remote Password file

INTERNAL

AB27B53EDC5FEF41

8A8F025737A9097A

SCOTT

7AA1A84E31ED7771

四、禁用OS认证

$ cd $ORACLE_HOME/network/admin

$ ls sqlnet.ora

ls: sqlnet.ora: No such file or directory

$ echo 'SQLNET.AUTHENTICATION_SERVICES=(NONE)' > sqlnet.ora

$ sqlplus / as sysdba  //提示,需输入正常的用户名和密码

ERROR:

ORA-01031: insufficient privileges

Enter user-name:

五、登陆后显示的账户信息是sys,而非scott

$ sqlplus scott/tiger as sysdba

SQL> show user

USER is "SYS"

************************************************第03部分 使用字典认证(非DBA)

只有在数据库run状态下普通用户连接上数据库时通过存储在字典表中的用户口令来进行鉴权认证。

03.1-创建用户并授授予SYSDBA权限

$ sqlplus / as sysdba

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0

SQL> select INSTANCE_NAME,STATUS from v$instance;

INSTANCE_NAME    STATUS

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

orcl             OPEN

SQL> create user ZCS identified by ZCS;

User created.

SQL>select USERNAME,PASSWORD from dba_users where USERNAME='ZCS';

USERNAME                       PASSWORD

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

ZCS                            8C4FBF9DAA31F429

SQL> grant create session to zcs;

Grant succeeded.

03.2-禁用密码认证并删除密码文件

SQL> show parameter remote_login_passwordfile

remote_login_passwordfile     EXCLUSIVE(默认)

SQL>alter system set remote_login_passwordfile=NONE scope=spfile;

System altered.              //禁用密码认证

SQL>startup force;

ORACLE instance started.    //为了使修改生效,重启数据库

SQL>host

$cd $ORACLE_HOME/dbs/

$mv orapworcl orapworcl.bak

03.3-禁用OS认证(密码完成正确才能登录)

客户端网络配置文件sqlnet.ora中的参数用来决定是采用OS层面的鉴权认证还是密码文件的鉴权认证。

$ cd $ORACLE_HOME/network/admin;ls sqlnet.ora

ls: sqlnet.ora: No such file or directory

$ echo 'SQLNET.AUTHENTICATION_SERVICES=(NONE)' > sqlnet.ora

03.4-使用数据字典认证登陆

$exit

exit

SQL> conn zcs/zcs

Connected

************************END***************************

oracle知识点精简总结系列持续增加中:

Oracle用户及用户配置文件精简总结http://www.itpub.net/thread-1775065-1-1.html

Oracle的登陆认证方式精简总结http://www.itpub.net/thread-1774785-1-1.html

实例恢复相关原理精简总结http://www.itpub.net/thread-1761630-1-1.html

Oracle权限精简总结http://www.itpub.net/thread-1775562-1-1.html

Oracle角色精简总结

http://www.itpub.net/thread-1775924-1-1.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值