创建用户:在oracle中创建一个用户有create user语句,一般是具有dba(数据库管理员)的权限才能使用。用户创建在所在的实例数据库中。
给用户修改密码:passw 给别人修改密码需要dba的权限
删除用户:drop 一般需要dba的身份,如果非dba身份删除则需要drop user的权限
drop user 用户名 cascade
如果删除的用户,已经创建了表,那么需要在删除的时候,需要带一个参数 cascade,级联删除所拥有的表。
用户管理的综合案例:创建的新用户是没有任何权限的,甚至连登陆权限都没有,需要为其指定相应的权限,给用户赋权用grant,回收权限用revoke。
oracle大概有140多种权限,分为两种:系统权限,对象权限
系统权限:用户对数据库的相关权限,例如登陆数据库权限create session,创建表、视图、索引、触发器等140多种权限。
对象权限:用户对其他用户数据对象操作的权限,有20多个权限。select、insert、update、delete、all、create index等权限
角色:oracle定义一些角色,将系统权限交给角色。比如connect 角色有7种权限,包括登陆权限create session。还有两个角色需要了解,一个是dba,一个是resource(让用户在任意一个表空间建表)
预定义角色:安装数据库oracle已经有了。connect,dba,resource
自定义角色:系统没有,自己定义的。(企业会用到精细的权限,这是orcle的强大之处)
希望小明访问scott的emp表。这里需要对象权限。
grant select on emp to xiaoming;(sys、system、scott等都可以进行授权)
scott收回xiaoming的emp表查看权限
对权限的维护:希望xiaoming用户可以查询scott的emp表的同时还希望小明把这个权限传递。
如果是对象权限:grant select on emp to xiaoming with grant option
如果是系统权限:grant connect to xiaoming with admin option
如果scott把xiaoming对emp表的查询权限回收,那么xihong的查询权限一样被回收。
使用profile管理用户口令:profile是口令限制,资源限制的命令集合,当建立数据库时,oracle会自动建立名称为default的profile.当建立用户没有指定profile选项,那么oracle会将default分配给用户。此文件很难找到,也无需必要找到。
(1)账户锁定
指定该账户登陆时最多可以输入密码次数,也可以指定用户锁定的时间,一般用dba身份。
例子:指定scott用户最多只能尝试3次,锁定时间为2天。(锁定时间至少一天)
创建profile文件
create profile dangjw limit failed_login_attempts 3 password_lock_time 2;
分配给xiaoming,替代原来默认的用户口令限制:
测试:
(2)给账户解锁
alter user xiaoming account unlock;
(3)终止口令:为了让用户定期修改密码可以使用终止口令的指令来完成,也要用dba身份。
例子:给前面创建的用户xiaoming创建一个profile文件,要求该用户每隔10天要修改自家的登陆密码,宽限期为2天。(实际上是12天)
create profile myprofile limit password_file_time 10 password_grace_time 2;
alter user xiaoming profile myprofile
口令历史:如果希望用户在修改密码时,不能使用以前的密码,可以使用口令历史,oracle会将口令修改的信息存放到数据字典种,当用户修改密码时,oracle会进行比较,如果发现一样,会提醒重新输入密码。
1)建立profile文件
create profile password_history limit password_life_time 10 password_grace_time 2 password_reuse_time 10(指定口令可重用时间即10天后可以重复)
删除文件profile :drop profile password_history cascade