Oracle学习日历(一)-用户管理

学习了韩顺平前辈的oracle 视频 ,在这里记录学习日志。深入浅出,点赞!

创建用户


概述:在oracle中要创建一个新的用户使用create user语句,一般是具有dba(数据库管理员)的权限才能使用。
create user 用户名 identified by 密码; (密码必须以字母开头)


给用户修改密码


概述:如果给自己修改密码可以直接使用
sql>password 用户名
如果给别人修改密码则需要具有dba的权限,或是拥有alter user的系统权限
SQL> alter user 用户名 identified by 新密码


删除用户


概述:一般以dba的身份去删除某个用户,如果用其它用户去删除用户则需要具有drop user的权限。
比如 drop user 用户名 【cascade】
在删除用户时,注意:
如果要删除的用户,已经创建了表,那么就需要在删除的时候带一个参数cascade;

Cascade有级联的作用


用户管理的综合案例


概述:创建的新用户是没有任何权限的,甚至连登陆的数据库的权限都没有,需要为其指定相应的权限。给一个用户赋权限使用命令grant,回收权限使用命令revoke。

 

给用户分配权限

 

给用户赋系统权限要有DBA或管理员权限的用户

oracle大概有140多种系统权限权限,对象权限有25个。

权限分类:系统权限 对象权限

系统权限:用户对数据的相关权限(建库、建表、登录、修改数据表等)

对象权限:用户对其他用户的数据对象访问或操作的权限(数据对象:过程、表空间、表、视图、触发器等其中操作权限包括select,insert,update,delete,all,create index等)

系统权限:

create session(登录权限)

resource(此权限可以在任何表空间创建表)

角色:connect  connect包含了所有普通用户所具备的权限,connect属于预定义角色。

dba角色: resource (包含所有DBA权限,)

resource角色:此角色可以在任何表空间创建表

角色分类:自定义角色 预定义角色

grant connect to xiaoming; ( 给xiaoming这个用户connect角色权限)

grant resource to xiaoming (给xiaoming这个用户 resource角色权限)

create table test(userid varchar2(30),username varchar2(30));

(create table test创建表 userid username是字段名 varchar2(30)是类型 )

desc test查看表结构 ,test是表名

希望xiaoming用户可以去查询其他用户的表需要用到对象权限,分配权限需要用dba、管理员或其他本身拥有表权限的用户去授权,同时撤销权限需要授权与权限的用户去撤销才行。

grant select on emp to xiaoming (EMP表本身拥有用户登录授权xiaoming用户查询权限)

grant update on emp to xiaoming (EMP表本身拥有用户登录授权xiaoming用户修改权限)

grant all on emp to xiaoming    (EMP表本身拥有用户登录授权xiaoming用户全部权限)

select * from scott.emp; (xiaoming用户得到emp表权限后,在查询的时候需要跟上emp表本身拥有者的用户名scott)

 

收回权限

 

revoke select on emp from xiaoming (用授权用户去收回xiaoming对emp表的查询权限)

revoke all on emp from xiaoming  (用授权用户去收回xiaoming对emp表的全部权限)

 

权限传递

 

xiaoming得到权限想传递给其他用户

--如果是对象权限,就加入 with grant option

grant select on emp to xiaoming with grant option

xiaoming把权限传递给xiaohong

grant select on sott.emp to xiaohong

--如果是系统权限

system给xiaoming可传递权限时;with admin option

grant connect to xiaoming with admin option

如果权限用户把xiaoming的权限回收了,xiaohong权限也会受影响。


 看图:

使用profile管理用户口令

概述:profile是口令限制,资源限制的命令集合,当建立数据库时,oracle会自动建立名称为default的profile.当建立用户没有指定profile选项,那oracle就会将default分配给用户。

账户锁定

概述:指定该账户(用户)登录时最多可以输入密码的次数,也可以指定用户锁定的时间(天)一般用dba的身份去执行该命令

例子:指定scott这个用户最多只有尝试3次登录,锁定时间为2天,让我们看看怎么实现。

创建profile文件  用DBA用户创建

sql>create profile lock_account limit failed_login_attempts 3 password_lock_time 2;  (lock_account规则名称 3是次数 2是锁定天数。红色字是固定语句)

sql>alter user scott profile lock_account; (把刚建的lock_account规则分配给scott用户)

给账户(用户)解锁  要用DBA用户来完成

sql>aliter user scott account unlock; (给scott用户解锁)

 

终止口令 用DBA用户来完成

为了让用户定期修改密码可以使用终止口令的指令来完成,同样这个命令也需要DBA身份来操作。

例子:给面前创建的用户tea创建一个profile文件,要求该用户每隔10天要修改自家的登录密码,宽限期为2天,看看怎么做。

sql>create profile lock_account limit password_life_time 10 password_grace_time 2;(lock_account规则名称 10是天数 2是宽限期。红色字是固定语句)

sql>alter user tea profile lock_account (给tea用户赋予刚建立的lock_account规则)

口令历史

概述:如果希望用户在修改密码时,不能使用以前使用过的密码,可使用口令历史,因为oracle就会将口令修改的信息存放到数据字典中,这样当用户修改密码时,oracle就会对新旧密码进行比较,当发现新旧密码一样时,就提示用户重新输入密码。

例子:

sql> create profile lock_account limit password_life_time 10 password_grace_time 2 password_reuser_time 10 (lock_account规则名称 10是每隔10天修改一次密码 2是宽限期。10是10天后旧密码可以重用,红色字是固定语句)

password_reuse_time //指定口令可重用时间即10天后就可以重用

2、分配给某个用户

alter user tea profile lock_account (把lock_account规则分配给tea)

 

删除profile里面的某个规则

概述:当不需要某个profile 规则时,可以删除该规则。

sql>drop profiel lock_account 【cascade】 (删除 lock_account规则,加cascade就会级联删除相关的所有东西)

Oracle 密码过期

概述:导致密码消失的原因:Oracle 11g中默认的DEFAULT概要文件中口令有效期PASSWORD_LIFE_TIME默认值为180天。

当以客户端登陆Oracle提示ORA-28002,则基本可以确定登陆帐号已过有效期,使用具有DBA权限的帐号重置该帐号密码即可。

解决方法:

以下步骤以具有DBA权限用户操作

1.查看口令失效用户的profile文件

SQL>SELECT username,profile FROM dba_users;

EM:服务器>用户,查看口令失效的用户对应的概要文件,这里假设为DEFAULT,下同。

2.查看对应的概要文件的口令有效期设置

SQL>SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';

注:如果这段语句查不到,可以直接查询 dba_profiles表 SELECT * FROM dba_profiles

EM:服务器>概要文件>选择刚刚查到的概要文件DEFAULT>查看,查看口令下面的有效期值。

3.将口令有效期默认值180天修改成“无限制”

SQL>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

EM:服务器>概要文件>选择刚刚查到的概要文件DEFAULT>编辑>口令,在有效期输入或选择你需要的值,保存。

注:该参数修改实时生效。

出于数据库安全性考虑,不建议将PASSWORD_LIFE_TIME值设置成UNLIMITED,即建议客户能够定期修改数据库用户口令。

在修改PASSWORD_LIFE_TIME值之前已经失效的用户,还是需要重新修改一次密码才能使用。

SQL>alter user  用户名 identified by 密码;

 

将密码改为永久有效举例说明

假定我们所使用的数据库用户为test,密码为test123456

步骤一:登陆oracle所在的linux服务器(我们的oracle假设在linux服务器上),注意要用dba用户。

步骤二:执行'sqlplus / as sysdba'

步骤三:输入'alter profile default limit password_life_time unlimited;'并回车

步骤四:输入'alter user test identified by test123456;'

步骤五:输入'quit;'退出sqlplus。

步骤六:重启各个业务部件,一切OK。

需要注意的是,对于第四步,可能会失败,因为oracle有可能设置了修改密码时不能与历史密码重复的限制,我们可以先执行以下命令去掉限制,然后再执行第四步。虽然对于第四步而言设置前后密码没有改变,但却是必要的吗,实际测试中发现即使做了第三步处理,如果不执行第四步,jdbc连接数据时依然会连接失败。

alter profile default limit password_reuse_max unlimited;

alter profile default limit password_reuse_time unlimited;

在使用profile并想重复利用密码的时,需要满足如下条件

1)password_reuse_time和password_reuse_max都为unlimted的时候

可以随便重置

2)当指定password_reuse_time和password_reuse_max其中一个,另外一个unlimted的时候

密码永远无法重置

3)当同时指定password_reuse_time和password_reuse_max的时候

在满足password_reuse_max的时候,可以重置密码

在同时满足password_reuse_time和password_reuse_max的时候,可以重置密码

在满足password_reuse_time但从为更换过密码的时候,也就是password_reuse_max一次也没用的时候密码无法重置.

上面这种处理方案是修复现网问题的弥补性措施,根本的要在oralce安装的时候就去掉密码有效期的限制。

 

profile各字段介绍

PASSWORD_LIFE_TIME

设定口令的有效时间(天数),一旦超过这一时间,必须重新设口令。缺省为180天(11g,10gUNLIMITED).

PASSWORD_REUSE_TIME

许多系统不许用户重新启用过去用过的口令。该资源项设定了一个失效口令要经过多少天,用户才可以重新使用该口令。缺省为UNLIMITED.

PASSWORD_REUSE_MAX

重新启用一个先前用过的口令前必须对该口令进行重新设置的次数(重复用的次数)。

PASSWORD_LOCK_TIME

设定帐户被锁定的天数(当登录失败达到FAILED_LOGIN_ATTEMPTS时)。

PASSWORD_GRACE_TIME

设定在口令失效前,给予的重新设该口令的宽限天。当口令失效之后回,在登录时会出现警告信息显示该天数。如果没有在宽限天内修改口令,口令将失效。

PASSWORD_VERITY_FUNCTION

该资源项允许调用一个PL/SQL 来验证口令。Oracle公司已提供该应用 的脚本,但是只要愿意的话,用户可以制定自己的验证脚本。该参数的设定就是PL/SQL函数的名称。缺省为NULL.

参考网址

http://www.blogjava.net/freeman1984/archive/2013/04/23/398301.html oracle 密码修改永久

http://www.cnblogs.com/yangy608/p/4054393.html oracle 密码修改永久

http://blog.sina.com.cn/s/blog_490a0c99010103sx.html oracle 密码修改永久

猜你喜欢

转载自blog.csdn.net/zx03070723/article/details/81084362
今日推荐