查看并修改Oracle用户的密码(适用于11g)
2017-03-18 13:32
246 查看
如果你的数据库版本低于11g请参考http://www.51testing.com/index.php?uid-364865-action-viewspace-itemid-222982 有时候我们可能不知道一个用户的密码,但是又需要以这个用户做一些操作,又不能去修改掉这个用户的密码,或者自己干脆忘记密码了,想修改自己的密码,这个时候,就可以利用一些小窍门,来完成操作。 还有,在数据库安全性检查中有一项首先要完成的工作,就是检查数据库中的用户密码是否还仍然保留着默认值,比如sys的密码是否还是change_on_install,system的密码是否还是manager,scott的密码是否还是tiger。
在Oracle11g之前,我们需要手工来完成这样的工作,大概步骤是:1. 创建一张自定义的表,保存下常用的系统用户以及默认密码的HASH值。2. 将系统中的用户密码HASH值与该表中的HASH值比较,如果相同,则表明还在使用默认值。
注意:在数据字典中存储的密码是被HASH算法加密过的,加密后的值不但跟密码本身有关还跟用户名有关,也就是,如果是不相同的用户名那么即使是完全相同的密码,加密后的HASH值也是不一样的。这样保证了每一个用户的每一个密码都有自己独一无二的HASH值。
在Oracle 11g之前,加密后的密码可以从DBA_USERS数据字典的PASSWORD字段中获得,因此可以通过这个字段中存储的值来做是否是默认值的检查。但是在11g中,PASSWORD字段却不再显示密码的内容了。先看一下文档中对这个字段的描述:
Indicates whether the user is authenticated by OID (GLOBAL) or externally authenticated (EXTERNAL); NULL otherwise
SQL> SELECT username,decode(password,NULL,'N
4000
ULL',password) password FROM dba_users;
USERNAME PASSWORD------------------------------ ------------------------------MGMT_VIEW NULLSYS NULLSYSTEM NULLDBSNMP NULLSNPM NULLSYSMAN NULLSNPW NULLSCOTT NULLKAMUS NULLOUTLN NULLWMSYS NULLDIP NULLORACLE_OCM NULLTSMSYS NULL
14 rows selected
可以看到PASSWORD字段已经不再显示密码内容,全部都为空。
那么,如果再去检查这些用户是否还在使用默认的密码呢?
方法一:从SYS.USER$基表中检查,在基表的password字段中仍然可以查到HASH后的值。
SQL> SELECT name,password FROM user$ WHERE name='SCOTT';
NAME PASSWORD------------------------------ ------------------------------SCOTT F894844C34402B67
方法二:这是推荐的方法,最简单的方法,11g中可以使用的方法,11g提供了新的DBA_USERS_WITH_DEFPWD视图,该视图中包含了所有还在使用默认密码的用户名。
SQL> ALTER user scott IDENTIFIED BY tiger; User altered. SQL> SELECT * FROM DBA_USERS_WITH_DEFPWD WHERE username='SCOTT'; USERNAME------------------------------SCOTT SQL> ALTER user scott IDENTIFIED BY tiger1; User altered. SQL> SELECT * FROM DBA_USERS_WITH_DEFPWD WHERE username='SCOTT'; no rows selectedOracle对于安全性的支持力求做到业界领先,Oracle始终在每个细节上进步着。
摘自:http://www.dbform.com/html/2009/673.html
在Oracle11g之前,我们需要手工来完成这样的工作,大概步骤是:1. 创建一张自定义的表,保存下常用的系统用户以及默认密码的HASH值。2. 将系统中的用户密码HASH值与该表中的HASH值比较,如果相同,则表明还在使用默认值。
注意:在数据字典中存储的密码是被HASH算法加密过的,加密后的值不但跟密码本身有关还跟用户名有关,也就是,如果是不相同的用户名那么即使是完全相同的密码,加密后的HASH值也是不一样的。这样保证了每一个用户的每一个密码都有自己独一无二的HASH值。
在Oracle 11g之前,加密后的密码可以从DBA_USERS数据字典的PASSWORD字段中获得,因此可以通过这个字段中存储的值来做是否是默认值的检查。但是在11g中,PASSWORD字段却不再显示密码的内容了。先看一下文档中对这个字段的描述:
Indicates whether the user is authenticated by OID (GLOBAL) or externally authenticated (EXTERNAL); NULL otherwise
SQL> SELECT username,decode(password,NULL,'N
4000
ULL',password) password FROM dba_users;
USERNAME PASSWORD------------------------------ ------------------------------MGMT_VIEW NULLSYS NULLSYSTEM NULLDBSNMP NULLSNPM NULLSYSMAN NULLSNPW NULLSCOTT NULLKAMUS NULLOUTLN NULLWMSYS NULLDIP NULLORACLE_OCM NULLTSMSYS NULL
14 rows selected
可以看到PASSWORD字段已经不再显示密码内容,全部都为空。
那么,如果再去检查这些用户是否还在使用默认的密码呢?
方法一:从SYS.USER$基表中检查,在基表的password字段中仍然可以查到HASH后的值。
SQL> SELECT name,password FROM user$ WHERE name='SCOTT';
NAME PASSWORD------------------------------ ------------------------------SCOTT F894844C34402B67
方法二:这是推荐的方法,最简单的方法,11g中可以使用的方法,11g提供了新的DBA_USERS_WITH_DEFPWD视图,该视图中包含了所有还在使用默认密码的用户名。
SQL> ALTER user scott IDENTIFIED BY tiger; User altered. SQL> SELECT * FROM DBA_USERS_WITH_DEFPWD WHERE username='SCOTT'; USERNAME------------------------------SCOTT SQL> ALTER user scott IDENTIFIED BY tiger1; User altered. SQL> SELECT * FROM DBA_USERS_WITH_DEFPWD WHERE username='SCOTT'; no rows selectedOracle对于安全性的支持力求做到业界领先,Oracle始终在每个细节上进步着。
摘自:http://www.dbform.com/html/2009/673.html
相关文章推荐
- 查看并修改Oracle用户的密码(适用于11g)
- 查看并修改Oracle用户的密码(适用于10g,9i)
- Oracle 11g用户修改密码及加锁解锁
- oracle 11g bug:修改普通用户密码挂住,所有客户端均连接不上,生产中断
- Oracle查看用户密码过期,修改永不过期
- 查看并修改Oracle用户的密码【oracle不能查看dba_users里password字段(存储密码的加密过的字符串)对应的密码明文】
- ORACLE 查看用户密码修改时间
- oracle 查看用户操作而不最终修改用户密码
- Oracle 11g用户修改密码及加锁解锁功能实例代码
- oracle11g用户密码过期后修改办法
- ORACLE 查看用户密码修改时间
- 忘记oracle的sys用户密码怎么修改以及Oracle 11g 默认用户名和密码
- Oracle解锁用户、修改用户密码、创建用户、查看当前登录用户
- 查看oracle 11g数据库用户的密码是否区分大小写
- oracle 11g scott用户的加解锁方法以及修改密码
- Oracle查看用户密码过期,修改永不过期
- 为oracle 11g hr用户解锁并修改密码
- oracle 11g r2修改数据用户密码
- 如何修改Oracle默认用户密码有效期时间
- oracle修改用户密码