返回顶部

欢迎来到菜鸟大明儿哥的博客

我们一起交流学习,不断提升自我

oracle用户修改密码策略---修改过期时间及错误次数

 

 首先了解下下面几个参数大致是做什么的

SQL> select * from dba_profiles;

 

PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT
------------------------------ -------------------------------- -------- -----------------
DEFAULT                        COMPOSITE_LIMIT                  KERNEL   UNLIMITED
DEFAULT                        SESSIONS_PER_USER                KERNEL   UNLIMITED
DEFAULT                        CPU_PER_SESSION                  KERNEL   UNLIMITED
DEFAULT                        CPU_PER_CALL                     KERNEL   UNLIMITED
DEFAULT                        LOGICAL_READS_PER_SESSION        KERNEL   UNLIMITED
DEFAULT                        LOGICAL_READS_PER_CALL           KERNEL   UNLIMITED
DEFAULT                        IDLE_TIME                        KERNEL   UNLIMITED          -----多少秒连续不活动的话系统自己主动断开连接
DEFAULT                        CONNECT_TIME                     KERNEL   UNLIMITED
DEFAULT                        PRIVATE_SGA                      KERNEL   UNLIMITED
DEFAULT                        FAILED_LOGIN_ATTEMPTS            PASSWORD 3                                        -- 密码出错次数(超过后账号将锁定)
DEFAULT                        PASSWORD_LIFE_TIME               PASSWORD 180                                      -- 密码有效期(天)
DEFAULT                        PASSWORD_REUSE_TIME              PASSWORD UNLIMITED                   -- 密码不能重新用的天数
DEFAULT                        PASSWORD_REUSE_MAX               PASSWORD UNLIMITED                   -- 密码重用之前修改的最少次数
DEFAULT                        PASSWORD_VERIFY_FUNCTION         PASSWORD NULL                         --密码复杂度策略
DEFAULT                        PASSWORD_LOCK_TIME               PASSWORD 1                                        -- 超过了1天后,帐号自动解锁
DEFAULT                        PASSWORD_GRACE_TIME              PASSWORD 7                                      -- 密码到期提前7天提醒

 

已选择16行。

 

一、修改密码过期时间

1、查看当前open用户

select username,account_status,expiry_date,profile from dba_users;

2、查看目前的密码过期策略

select * from dba_profiles s where s.profile='DEFAULT' and resource_name='PASSWORD_LIFE_TIME';

3、修改密码过期策略

alter profile default limit password_life_time unlimited;

4、过期的账户,重置密码后期不会再过期

$sqlplus / as sysdba

alter user smsc identified by <原来的密码> ----不用换新密码

 

密码过期提前多少天提示设置

 alter  profile default limit PASSWORD_GRACE_TIME 7

ORA-28002: the password will expire within 7 days

 

5.账户过期,必须要用户更改密码, 账户才能重新使用。

ORA-28001:the password has expired  

 

但有些时候, 因为各种原因, 我们并不知道原密码的明文是什么,但很多时候又不能修改已有密码,好在可以用原密码来更改密码。

 

在11G及之后的版本中,dba_users.password已经不再显示用户的密码:

SQL> select username,ACCOUNT_STATUS from dba_users where username in ('SYSTEM','SCOTT');

 
USERNAME                       ACCOUNT_STATUS
------------------------------ --------------------------------
SCOTT                          EXPIRED
SYSTEM                                OPEN
 
SQL> select password from dba_users where username in ('SYSTEM','SCOTT');
 
PASSWORD
 
 
在系统表user$中,可以查看用户的密码(PASSWORD)和状态(ASTATUS)
SQL> select user#,name,password,astatus from userwhere name in ('SYSTEM','SCOTT');
 
     USERNAME                           PASSWORD                          ASTATUS
---------- ------------------------------ ------------------------------ ----------
        83 SCOTT                          F894844C34402B67                              1
         5 SYSTEM                         2D594E86F93B17A1                              0  
 
 
可以通过上面的查询结果,用原来的密码来修改过期用户的密码:
SQL> alter user scott identified by values 'F894844C34402B67'
 
User altered.
 
SQL> select user#,name,password,astatus from userwhere name in ('SYSTEM','SCOTT');
 
     USERNAME                           PASSWORD                          ASTATUS
---------- ------------------------------ ------------------------------ ----------
        83 SCOTT                          F894844C34402B67                        0
         5 SYSTEM                         2D594E86F93B17A1                        0

 

 

其实也可以直接修改表user$的字段ASTATUS为0,这样用户账号就变成open状态了。
ASTATUS对应的值的含义可以同过user_astatus_map查看

 

SQL> select * from user_astatus_map;

 

 

二、修改密码错误次数

select * from dba_profiles s where s.profile='DEFAULT' and resource_name='FAILED_LOGIN_ATTEMPTS';

 

SQL>alter profile default limit failed_login_attempts 20;    //修改为20次

 

三、添加profile文件并分配用户

create profile profile名字 limit FAILED_LOGIN_ATTEMPTS  10 PASSWORD_LIFE_TIME  180 PASSWORD_REUSE_TIME  UNLIMITED PASSWORD_REUSE_MAX  UNLIMITED PASSWORD_VERIFY_FUNCTION null PASSWORD_LOCK_TIME 1 PASSWORD_GRACE_TIME 30;

 

alter user 用户名 profile profile名字;

 

 密码复杂度策略 详见https://www.cnblogs.com/zhm1985/articles/13355814.html

posted @ 2019-11-29 15:37  菜鸟大明儿哥  阅读(7590)  评论(0编辑  收藏  举报