Oracle用户管理
创建新用户
create user 用户名 identified by 密码;
修改密码
password (修改自己的密码可以使用该命令)
alter user 用户名 identified by 密码;(dba修改普通用户的密码)
删除用户
drop user 用户名
给用户赋予权限
grant connect to 用户名
常见的权限和角色
create session------登录到数据库的权限
connect-------是一种角色(权限的集合)
用户权限:
- 系统权限:用户对数据库的相关权限
- 对象权限:用户对其他用户的数据对象操作的权限
用户角色:
- 自定义角色
- 预定义角色
数据库中的重要角色:
resource、dba、connect
对象权限:
select 、insert、update(修改)、delete、all(所有权限 )
connect-------是一种角色(权限的集合)
用户操作权限:
- 用户授权:grant 对象权限 on 表名 to 用户名;(有权授予该权利的是sys或system或者拥有该表的用户) 当该用户访问别的用户的表的时候,格式为:别的用户名.表名。
- 收回权限:revoke 对象权限 on 表名 from 用户名;(只有给用户授权的用户才可以收回权限)
- 权限的传递:希望某用户可以查询另一个用户的某表,还希望该用户还可以把这个权限继续给别人。
- 格式:grant 权限 on 表名 to 用户名 with grant option;
–grant select on emp to aa with grant option;(如果是对象权限,则加上with grant option) - 格式: grant 角色 to 用户名 with admin option;
–grant connect to aa with admin option;(如果是系统权限)
注意
用户权限传递需要注意的事项:
- 用户的系统权限的传递过程中,就算用户A已经把权限授给了另一个用户B,而当该用户A的权限被收回时,其授予B的权限也无法被收回(系统权限的收回是不级联的)
- 用户的对象权限的传递过程中,就算用户A已经把权限授予了另一个用户B,而当该用户A的权限被收回时,其授予B的权限也将被收回(对象权限的收回是级联的)
使用profile管理用户口令:
概述:profile是口令限制、资源限制的命令集合。当建立数据库时,Oracle会自动建立名为default的profile,当建立的用户没有指定profile选项,那Oracle就会将default分配给用户。
-
账户锁定:就是指该账户(用户)登录时最多可以输入密码的次数,也可以指定用户锁定的时间(天),一般用DBA的身份去执行该命令。
例子:指定Scott用户最多尝试输入3次密码,锁定时间为2天。
创建profile文件:create profile aaa(文件名) limit failed_login_attempts 3(次数) password_lock_time 2(天数);
分配给用户:
alert user Scott(用户名) profile aaa(文件名);
-
给账户(用户)解锁:
alter user scott(用户名) account unlock;
-
为了让用户定期修改密码,可以使用终止口令的指令来完成,这个操作需要dba的身份操作:
例:给用户Scott创建一个profile文件,要求该用户每隔10天就修改一次自家的Oracle登录密码,宽限期为2天。创建profile文件:
create profile bbb(文件名) limit password_life_time 10(每次修改间隔天数) password_grace_time 2(宽限天数);
分配给用户:
alert user Scott(用户名) profile bbb(文件名)
-
口令历史:如果希望用户在修改密码时,不能使用以前使用过的密码,可以使用口令历史,这样Oracle就会将口令修改的信息存放到数据字典中,这样当用户修改密码时,Oracle就会对新旧密码进行比较,当发现新旧密码一致时就会提示用户重新输入密。
例:给用户Scott创建一个profile文件,要求该用户每隔10天就修改一次自家的Oracle登录密码,宽限期为2天。创建profile文件:
create profile ccc(文件名) limit password_life_time 10(每次修改密码的间隔天数) password_grace_time 2 (宽限天数) password_reuse_time 10(口令可重用时间,即10天后可以重用);
分配给用户:
alter user Scott(用户名) profile ccc(文件名);
-
删除profile:当不需要某个profile文件的时候,可以删除该文件:
drop profile ccc(文件名)[cascade]
注意:当删除profile文件后,被该profile文件约束的用户将被释放