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
SQL>
select
user
#,
name
,
password
,astatus
from
user
$
where
name
in
(
'SYSTEM'
,
'SCOTT'
);
USER
#
NAME
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
user
$
where
name
in
(
'SYSTEM'
,
'SCOTT'
);
USER
#
NAME
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