查看: 7873|回复: 9

[原创] Oracle的登陆认证方式精简总结

[复制链接]
求职 : 数据库管理员
论坛徽章:
45
祖国60周年纪念徽章
日期:2015-05-19 13:02:04itpub13周年纪念徽章
日期:2014-12-30 09:02:122010数据库技术大会纪念徽章
日期:2015-04-23 10:33:192011数据库大会纪念章
日期:2015-04-23 10:33:192012数据库大会纪念章
日期:2015-04-23 10:33:192013数据库大会纪念章
日期:2015-04-23 10:33:192014数据库大会纪念章
日期:2015-04-23 10:33:192015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24暖羊羊
日期:2015-05-13 18:24:182015年新春福章
日期:2015-05-30 17:02:05
跳转到指定楼层
1#
发表于 2013-3-22 19:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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> connect sys/install@192.168.188.128:1521/orcl
ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
SQL> connect sys/install@192.168.188.128:1521/orcl as 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=<密码文件的名字orapw<sid>>
password=< sys用户的密码>
entries=<密码文件用户数,二进制文件按矩阵计算可存多少数>
force=<y/n10g可选新增,默认n ,y表示允许覆盖>

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


论坛徽章:
490
红宝石
日期:2014-04-05 19:53:18海蓝宝石
日期:2014-04-05 21:24:30数据库板块每日发贴之星
日期:2013-05-27 22:53:45生肖徽章:鸡
日期:2014-08-24 18:39:29青年奥林匹克运动会-羽毛球
日期:2014-09-24 08:37:59马上有房
日期:2015-01-03 10:23:28喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47秀才
日期:2017-04-06 18:09:28版主6段
日期:2014-05-27 02:19:57
2#
发表于 2013-3-22 20:07 | 只看该作者
LZ辛苦了,支持原创

使用道具 举报

回复
论坛徽章:
3
2013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09
3#
发表于 2013-3-22 20:31 | 只看该作者
占个板凳,学习ing...
误删数据恢复,是否有原理性和实战型结合的文章推荐下,谢谢。
回收站、闪回(drop、delete、truncate...)

使用道具 举报

回复
求职 : 数据库管理员
论坛徽章:
45
祖国60周年纪念徽章
日期:2015-05-19 13:02:04itpub13周年纪念徽章
日期:2014-12-30 09:02:122010数据库技术大会纪念徽章
日期:2015-04-23 10:33:192011数据库大会纪念章
日期:2015-04-23 10:33:192012数据库大会纪念章
日期:2015-04-23 10:33:192013数据库大会纪念章
日期:2015-04-23 10:33:192014数据库大会纪念章
日期:2015-04-23 10:33:192015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24暖羊羊
日期:2015-05-13 18:24:182015年新春福章
日期:2015-05-30 17:02:05
4#
 楼主| 发表于 2013-3-22 20:54 | 只看该作者
miaocbin 发表于 2013-3-22 20:31
占个板凳,学习ing...
误删数据恢复,是否有原理性和实战型结合的文章推荐下,谢谢。
回收站、闪回(drop ...

10g各种闪回实验手册(20130220重传)
http://www.itpub.net/thread-1765188-1-1.html
第 01 章-闪回时间点查询(查过去某时间点,基于undo)                            02
第 02 章-闪回表(恢复表及附属对象到某时, row movement,基于undo)  05
第 03 章-闪回删除(基于非system表空间的recyclebin)                         07
第 04 章-闪回数据库(基于闪回恢复区的闪回log)                                   11
第 05 章-闪回版本查询(查某行在两时间点的所有版本,基于undo)             15
第 06 章-闪回事务查询(查一事务造成改变的UNSQL,基于undo)             18

这是以前整理的闪回的内容
还没达让我自已满意,
计划5月份做较大的改进,
等内容更新定稿还会在贴地址重新发布。。。

使用道具 举报

回复
论坛徽章:
490
红宝石
日期:2014-04-05 19:53:18海蓝宝石
日期:2014-04-05 21:24:30数据库板块每日发贴之星
日期:2013-05-27 22:53:45生肖徽章:鸡
日期:2014-08-24 18:39:29青年奥林匹克运动会-羽毛球
日期:2014-09-24 08:37:59马上有房
日期:2015-01-03 10:23:28喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47秀才
日期:2017-04-06 18:09:28版主6段
日期:2014-05-27 02:19:57
5#
发表于 2013-3-22 21:43 | 只看该作者
miaocbin 发表于 2013-3-22 20:31
占个板凳,学习ing...
误删数据恢复,是否有原理性和实战型结合的文章推荐下,谢谢。
回收站、闪回(drop ...

各种闪回的使用
http://blog.csdn.net/guoyjoe/article/details/8571135

使用道具 举报

回复
论坛徽章:
3
2013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09
6#
发表于 2013-3-22 22:21 | 只看该作者
哈!多谢多谢。学习ing

使用道具 举报

回复
论坛徽章:
2
ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:152013年新春福章
日期:2013-02-25 14:51:24
7#
发表于 2013-3-23 16:45 | 只看该作者
支持

使用道具 举报

回复
论坛徽章:
8
ITPUB9周年纪念徽章
日期:2010-10-08 09:32:272010广州亚运会纪念徽章:跆拳道
日期:2010-10-14 22:01:22奥运纪念徽章
日期:2012-11-20 10:27:31奥运纪念徽章
日期:2012-11-28 09:33:312013年新春福章
日期:2013-02-25 14:51:24双黄蛋
日期:2013-03-25 11:39:26马上有房
日期:2014-08-01 11:40:27马上有对象
日期:2014-10-30 16:00:28
8#
发表于 2013-3-25 11:14 | 只看该作者
不错,学习了

使用道具 举报

回复
求职 : 数据库管理员
论坛徽章:
45
祖国60周年纪念徽章
日期:2015-05-19 13:02:04itpub13周年纪念徽章
日期:2014-12-30 09:02:122010数据库技术大会纪念徽章
日期:2015-04-23 10:33:192011数据库大会纪念章
日期:2015-04-23 10:33:192012数据库大会纪念章
日期:2015-04-23 10:33:192013数据库大会纪念章
日期:2015-04-23 10:33:192014数据库大会纪念章
日期:2015-04-23 10:33:192015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24暖羊羊
日期:2015-05-13 18:24:182015年新春福章
日期:2015-05-30 17:02:05
9#
 楼主| 发表于 2013-3-25 11:37 | 只看该作者
Fung920 发表于 2013-3-25 11:14
不错,学习了

多谢支持,共同学习。。。。

使用道具 举报

回复
论坛徽章:
3
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:512014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08
10#
发表于 2013-3-25 19:17 | 只看该作者
一起进步呀

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表