码迷,mamicode.com
首页 > 其他好文 > 详细

不修改用户密码的前提下,解锁用户

时间:2018-05-01 10:46:13      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:HERE   sql   账户   specified   exp   参数   font   use   报错   

不修改用户密码的前提下,解锁用户

 

1.0需求:某用户通知,无法登陆,用户被锁定,但是密码不知道 或者 不告诉你

 

1.1:用户被锁定:几种可能性

A用户使用默认Pfile概要文件,其中参数:

-- PASSWORD_LIFE_TIME 180          密码有效保留时间

B用户使用默认Pfile概要文件,其中参数:

-- FAILED_LOGIN_ATTEMPTS 10        登录失败后,允许尝试登录的次数

-- PASSWORD_LOCK_TIME   1      登录失败后,超出限制,账户锁定天数

C 用户使用的自定义设置:本次实验不做考虑

 

1.2故障模拟

#创建测试用户

SQL> create user yang identified by asfqr1rfa10;

#锁定用户

SQL> alter user yang account lock;

 

#PL/SQL登陆报错

 

SQL*Plus登陆报错

SQL> conn yang/asfqr1rfa10; 

ERROR:

ORA-28000:

Warning: You are no longer connected to ORACLE.

#查询报错解释说明

SQL> !oerr ora 28000

28000, 00000, "the account is locked"

// *Cause:   The user has entered wrong password consequently for maximum

//           number of times specified by the user‘s profile parameter

//           FAILED_LOGIN_ATTEMPTS, or the DBA has locked the account

// *Action:  Wait for PASSWORD_LOCK_TIME or contact DBA

#输入错误的密码,超出允许输入错误次数的范围,用户被锁定

#DBA锁定  请联系DBA

 

1.3解决思路

1.3.1查询信息

# SQL> alter session set nls_date_format=‘yyyy-mm-dd hh24:mi:ss‘;

SQL>  select USERNAME,PASSWORD,ACCOUNT_STATUS,LOCK_DATE,PROFILE from dba_users where username =‘YANG‘;

YANG        用户

LOCKED     锁定

2018-01-14 01:25:21   锁定时间

DEFAULT   概要文件默认

 

1.3.2 查询用户密码 hash后的值

SQL>select name,password from user$ where name=‘YANG‘

 

NAME       PASSWORD

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

YANG       BF382C1C900CB086

 

1.3.2使用密码hash值解锁用户,密码不修改

SQL> alter user yang identified by values ‘BF382C1C900CB086‘ account unlock;

 

1.3.3验证

SQL> conn yang/asfqr1rfa10

Connected.

 

1.3.4设置密码永不过期

默认概要文件180天过期,可以修改概要文件参数

#查询用户账户密码到期时间

SQL>  alter session set nls_date_format=‘yyyy-mm-dd hh24:mi:ss‘;

SQL>  select username,expiry_date from dba_users where username in(‘HR‘,‘YANG‘);

USERNAME                                                     EXPIRY_DATE

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

YANG                                                         2018-07-13 01:49:18

HR                                                           2018-07-12 06:09:24

 

SQL> select sysdate from dual;

2018-01-14 01:55:04

 

#修改无限制OK

alter profile default limit password_life_time unlimited;

 

#查询验证

SQL> select username,expiry_date from dba_users where username in(‘HR‘,‘YANG‘);

 

USERNAME   EXPIRY_DATE

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

YANG

HR

 

#扩展:可以修改上述:密码登录错误后,允许尝试连接次数,修改无限制:慎重

不修改用户密码的前提下,解锁用户

标签:HERE   sql   账户   specified   exp   参数   font   use   报错   

原文地址:https://www.cnblogs.com/lvcha001/p/8975554.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!