zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    RPM包校验和提取
    RPM包查询
    Find命令简介
    无法启动配置好的虚拟机
    文档发布至博客操作说明
    VMware Virtual Machine安装报错解决1
    python create home dircetory
    Centos7/Active Directory authentication using nss-pam-ldapd
    java try后面括号的作用
    vps上搭建jupyter notebook远程服务
  • 原文地址:https://www.cnblogs.com/zhm1985/p/11958078.html
Copyright © 2011-2022 走看看