Oracle的用户帐户管理里面大有学问了, 控制非常灵活, 设计非常精巧, 如果我们能够在我们自己的数据库应用程序中应用这种技术, 相信用户也会非常开心的^_^.
用户的Accountstatus一共有一下几种情况.
SQL> select * from user_astatus_map;
STATUS# STATUS
---------- --------------------------------
0 OPEN 当前帐户是开放的用户可以自由登录
1 EXPIRED 当前帐户已经过期, 用户必须在修改密码以后才可以登录系统, 在登录的时候, 系统会提示修改密码
2 EXPIRED(GRACE) 这是有password_grace_time定义的一个时间段, 在用户密码过期以后的第一次登录, 系统会提示用户,密码在指定的时间段以后会过期, 需要及时修改系统密码.
4 LOCKED(TIMED) 这是一个有条件的帐户锁定日期, 由password_lock_time进行控制, 在lock_date加上password_lock_time的日期以后,帐户会自动解锁.
8 LOCKED 帐户是锁定的,用户不可以登录, 必须由安全管理员将帐户打开用户才可以登录.
5 EXPIRED & LOCKED(TIMED)
6 EXPIRED(GRACE) & LOCKED(TIMED)
9 EXPIRED & LOCKED
10 EXPIRED(GRACE) & LOCKED
9 rows selected.
下面大概解释一下open.locked,expired,EXPIRED(GRACE) ,LOCKED(TIMED) ,
其余几个概念就是这几个状态的组合:-), 我就不多言了.
1. open 当前用户是开放的可以使用的.
SQL> select username,account_status from dba_users where username = 'TONGJW';
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
TONGJW OPEN
SQL> conn tongjw
Enter password: *******
Connected.
2. expired 表示用户已经过期, 登录的时候, 如果密码输入正确,系统会提示重新输入密码的.
SQL> conn jfdata/jf
Connected.
SQL> alter user tongjw account unlock;
User altered.
SQL> alter user tongjw password expire;
User altered.
SQL> conn tongjw
Enter password: *******
ERROR:
ORA-28001: the password has expired
Changing password for tongjw
New password: *******
Retype new password: *******
Password changed
Connected.
3. locked 表明当前帐户被锁了, 不可以登录的.
SQL> conn jfdata/jf
Connected.
SQL> alter user tongjw account lock;
User altered.
SQL> conn tongjw
Enter password: *******
ERROR:
ORA-28000: the account is locked
Warning: You are no longer connected to ORACLE.
expired (grace) 与 locked (timed) 是有系统的profile来进行控制的.
4. expired (grace) , 通过profile的password_grace_time进行控制.
password_grace_time 指的是在你的密码已经过期以后, 第一次登录时间开始往后统计, 使系统可以使用的日期限度.
SQL> select username,account_status,lock_date,expiry_date,profile
2 from dba_users where username = 'TONGJW'
3 /
USERNAME ACCOUNT_STATUS LOCK_DATE EXPIRY_DA PROFILE
------------------------------ -------------------------------- --------- --------- ------------------------------
TONGJW OPEN DEFAULT
SQL> create profile test limit password_life_time 10 password_grace_time 3;
Profile created.
SQL> alter user tongjw profile test;
User altered.
SQL> select username,account_status,lock_date,expiry_date,profile
2 from dba_users where username = 'TONGJW'
3 /
USERNAME ACCOUNT_STATUS LOCK_DATE EXPIRY_DA PROFILE
------------------------------ -------------------------------- --------- --------- ------------------------------
TONGJW OPEN 15-APR-05 TEST
为什么这个地方是 05-4-15日到期, 我还需要进一步学习^_^.
SQL> host
[oracle@TzDbTzcenter2 ]$ su
Password: ********
我们修改对应的系统时间, 使其在密码过期的日期以后.
[root@TzDbTzcenter2 ]# date '04161528'
Sat Apr 16 15:28:00 CST 2005
[root@TzDbTzcenter2 ]# exit
[oracle@TzDbTzcenter2 ]$ exit
SQL> select username,account_status,lock_date,expiry_date,profile
2 from dba_users where username = 'TONGJW'
3 /
USERNAME ACCOUNT_STATUS LOCK_DATE EXPIRY_DA PROFILE
------------------------------ -------------------------------- --------- --------- ------------------------------
TONGJW OPEN 15-APR-05 TEST
SQL> conn tongjw/tongjw
ERROR:
ORA-28002: the password will expire within 3 days
Connected.
SQL> conn jfdata/jf
Connected.
SQL> select username,account_status,lock_date,expiry_date,profile
2 from dba_users where username = 'TONGJW'
3 /
USERNAME ACCOUNT_STATUS LOCK_DATE EXPIRY_DA PROFILE
------------------------------ -------------------------------- --------- --------- ------------------------------
TONGJW EXPIRED(GRACE) 19-APR-05 TEST
SQL> host
[oracle@TzDbTzcenter2 ]$ su
Password: ********
[root@TzDbTzcenter2 ]# date '04201529'
Wed Apr 20 15:29:00 CST 2005
[root@TzDbTzcenter2 ]# exit
[oracle@TzDbTzcenter2 ]$ exit
SQL> select username,account_status,lock_date,expiry_date,profile
2 from dba_users where username = 'TONGJW'
3 /
USERNAME ACCOUNT_STATUS LOCK_DATE EXPIRY_DA PROFILE
------------------------------ -------------------------------- --------- --------- ------------------------------
TONGJW EXPIRED(GRACE) 19-APR-05 TEST
SQL> conn tongjw/tongjw
ERROR:
ORA-28001: the password has expired
Changing password for tongjw
New password:
Retype new password:
ERROR:
ORA-00988: missing or invalid password(s)
Password unchanged
Warning: You are no longer connected to ORACLE.
SQL> conn jfdata/jf
Connected.
SQL> select username,account_status,lock_date,expiry_date,profile
2 from dba_users where username = 'TONGJW'
3 /
USERNAME ACCOUNT_STATUS LOCK_DATE EXPIRY_DA PROFILE
------------------------------ -------------------------------- --------- --------- ------------------------------
TONGJW EXPIRED 19-APR-05 TEST
SQL> conn tongjw/tongjw
ERROR:
ORA-28001: the password has expired
Changing password for tongjw
New password: ******
Retype new password: ******
Password changed
Connected.
SQL> conn jfdata/
Enter password: **
Connected.
SQL> select username,account_status,lock_date,expiry_date,profile
2 from dba_users where username = 'TONGJW'
3 /
USERNAME ACCOUNT_STATUS LOCK_DATE EXPIRY_DA PROFILE
------------------------------ -------------------------------- --------- --------- ------------------------------
TONGJW OPEN 30-APR-05 TEST
SQL>
如果该用户, 没有登录, 对应的expiry_date是不会发生改变的,
只要铜壶登录, 对应的expiry_date就会进行更新, 当然也会提示用户修改对应的密码,
也就是说, 这个日期是在用户登录的时候进行更新的,
更进一步, 我们可由此断定, Oracle是在用户登录的时候, 取出用户对应的这些信息,
if expiry_date > sysdate then
enter into
else if expiry_date < sysdate then
if grace_time is set then
expiry_date = sysdate + expiry_date;
else
prompt your passwors has expired.
end if
end if;
用户的密码过期路径可以大略的表示如下.
t1 设置profile的时间/或者用户重新修改密码的时间05-4-5
t2 用户在密码过期以后,第一次登录数据库的时间, 05-4-16 password_change_time + life_time
t3 用户密码真正过期的时间, 05-04-19 05-04-16 + grace_time
t4 修改密码的时间, 05-04-19...
t1 t2 t3 t4
|<-----------密码正常时期------------------>|<------grace expird----->|<-------expired------------>|
|---------------------------------------------------------------------------------------------------------------------
5. lock (timed) 可以这么理解,a. 当前系统是锁定的, b. 这个锁定有一个时间限制,是timed. 这个时间跨度有profile的password_lock_time来进行控制.
SQL> select username,account_status,lock_date,expiry_date,profile
2 from dba_users where username = 'TONGJW'
3 /
USERNAME ACCOUNT_STATUS LOCK_DATE EXPIRY_DA PROFILE
------------------------------ -------------------------------- --------- --------- ------------------------------
TONGJW OPEN DEFAULT
SQL> create profile test limit
2 failed_login_attempts 3
3 password_lock_time 3
4 /
Profile created.
SQL> alter user tongjw profile test;
User altered.
SQL> select username,account_status,lock_date,expiry_date,profile
2 from dba_users where username = 'TONGJW'
3 /
USERNAME ACCOUNT_STATUS LOCK_DATE EXPIRY_DA PROFILE
------------------------------ -------------------------------- --------- --------- ------------------------------
TONGJW OPEN TEST
SQL> alter user tongjw identified by tongjw
2 /
User altered.
SQL> conn tongjw/tong
ERROR:
ORA-01017: invalid username/password; logon denied
Warning: You are no longer connected to ORACLE.
SQL> conn tongjw/tongj
ERROR:
ORA-01017: invalid username/password; logon denied
SQL> conn tongjw/tong1
ERROR:
ORA-01017: invalid username/password; logon denied
SQL> conn jfdata/jf
Connected.
SQL> select username,account_status,lock_date,expiry_date,profile
2 from dba_users where username = 'TONGJW'
3 /
USERNAME ACCOUNT_STATUS LOCK_DATE EXPIRY_DA PROFILE
------------------------------ -------------------------------- --------- --------- ------------------------------
TONGJW LOCKED(TIMED) 26-MAR-05 TEST
SQL> host
[oracle@TzDbTzcenter2 ]$ su
Password: ********
[root@TzDbTzcenter2 ]# date '04301603'
Sat Apr 30 16:03:00 CST 2005
[root@TzDbTzcenter2 ]# exit
[oracle@TzDbTzcenter2 ]$ exit
SQL> select username,account_status,lock_date,expiry_date,profile
2 from dba_users where username = 'TONGJW'
3 /
USERNAME ACCOUNT_STATUS LOCK_DATE EXPIRY_DA PROFILE
------------------------------ -------------------------------- --------- --------- ------------------------------
TONGJW LOCKED(TIMED) 26-MAR-05 TEST
DBA_USERS describes all users of the database.
Related View
USER_USERS describes the current user. This view does not display the PASSWORD or PROFILE columns.
分享到:
相关推荐
Oracle允许管理员通过`ALTER USER`命令来设定口令的过期、锁定或解锁用户账户。例如,`ALTER USER blue PASSWORD EXPIRE`将使用户蓝色的密码立即过期,`ALTER USER blue ACCOUNT LOCK`将锁定该账户,而`ALTER USER ...
在Oracle中,用户安全管理是基础,它涉及到用户账户的创建、管理以及权限分配。当安装完数据库服务器后,系统会预设一些管理员账户,如sys、system、sysman和dbsnmp。这些管理员账户可以用来创建和管理其他用户账户...
### Oracle用户管理详解 #### 一、用户创建与配置 在Oracle数据库中,用户管理是一项重要的任务,它涉及用户的创建、权限的分配以及各种安全设置等。以下是对文档中的几个关键命令进行详细解读: 1. **创建用户...
2. 设置用于运行任务和事件监控的 Windows NT 用户的账户:需要创建一个和管理员等同的账号,并赋予"Logon as a Batch Job" 的权限。 通过了解 Oracle 企业管理器(OEM 2.1)的体系结构和框架设置,用户可以更好地...
删除用户是指删除用户账户和相关对象。 六、sysdba 登录 sysdba 登录是指使用超级管理员权限登录 Oracle 数据库。sysdba 登录需要使用 sys 用户和密码。sysdba 登录可以进行数据库的管理和维护。 七、操作系统...
### Oracle用户管理详解 #### 一、用户创建与基本概念 在Oracle数据库中,用户管理是一项重要的任务,它涉及到数据库的安全性和数据访问控制。对于初学者来说,掌握Oracle用户管理的基本操作至关重要。 **用户...
Oracle 数据库用户锁定是指用户账户被锁定,无法登录数据库的情况。这种情况可能是由于用户密码输入错误次数超过限制,或者是数据库管理员对用户账户进行了锁定。在 Linux 下,Oracle 数据库用户锁定的解决方案主要...
Oracle10g中的用户和权限管理是数据库管理的重要组成部分,它确保了数据的...通过本课程的学习,应能实现对Oracle10g数据库用户账户的全面管理,包括创建、验证、权限分配、角色创建、概要文件管理和用户安全性的维护。
- **多用户管理**:配置多个具有管理权限的用户账户,以防万一某个用户无法登录时有备用方案。 #### 四、总结 忘记Oracle Database 10g管理员用户口令可能会导致一系列问题,但通过上述介绍的方法可以有效地解决...
- 用户账户管理:包括创建用户、分配角色、权限控制等,确保数据的安全性。 - 数据加密:Oracle 12c提供了多种数据加密方法,比如透明数据加密(TDE)和网络数据加密,以防止数据泄露。 - 审计:通过配置数据库...
总之,Oracle数据库安全管理是一个多层面的过程,涵盖了概要文件的配置、用户账户的管理以及权限和角色的分配。正确实施这些策略可以确保数据库的稳定运行,保护数据免受未经授权的访问和滥用,同时满足合规性和审计...
* 添加用户:创建新的用户账户,指定用户的角色和权限。 * 修改用户:修改用户的个人信息,包括用户名、密码、邮箱等。 * 删除用户:删除不再需要的用户账户。 班级信息管理 班级信息管理模块主要功能包括添加、...
在Oracle数据库管理系统中,用户管理是一项至关重要的任务,它涉及到数据的安全性、访问控制和资源管理。以下将详细讲解在Oracle中进行用户管理的相关知识点: 1. 创建用户:使用`CREATE USER`语句来创建新的数据库...
用户的创建包括创建用户账户、设置密码、分配权限等。在分配权限时,我们需要设置不同的权限,例如SELECT、INSERT、UPDATE、DELETE等。 四、对象创建与管理 对象创建与管理是 Oracle 数据库管理系统的核心组成部分...
#### 一、Oracle用户管理概述 在Oracle数据库管理系统中,用户管理是一项非常重要的任务。正确地创建用户并授予适当的权限对于确保数据的安全性和完整性至关重要。本文将详细介绍如何在Oracle数据库中添加用户以及...
总结来说,Oracle账户权限管理涉及用户创建、权限授予、撤销、传递和角色管理。系统权限和对象权限的精细划分确保了数据库的安全性,同时角色的使用方便了权限的批量分配。在实际操作中,应根据业务需求合理设置和...
#### 一、Oracle用户管理概述 在Oracle数据库系统中,用户管理是一项非常重要的任务,它涉及到数据的安全性和访问控制。Oracle提供了多种方式来管理和维护用户账号,其中包括创建新用户、修改用户属性、锁定或解锁...
### Oracle用户创建详解 #### 一、Oracle简介与用户管理的重要性 Oracle数据库系统是一种广泛使用的高性能关系型数据库管理系统。...希望这些内容能够帮助大家更好地理解和掌握Oracle用户管理的相关知识。
如果忘记了某个用户的密码,你可以通过以下步骤来修改Oracle用户密码: 1. **以sys用户身份登录**:使用`connect sys/oracle as sysdba`命令,其中`oracle`是操作系统认证的用户名。 2. **查看当前用户和密码**:...