1. 创建用户
概述:在oracle中要创建一个新的用户,使用create user语句,一般是具有dba的权限才能使用。
用法:create user 用户名 identified by 密码。
案例:create user skycloud identified by skycloud;
2. 修改密码
概述:如果修改自己的密码,使用 passw 用户名 语句。如果修改其他用户的密码,需要具有dba的权限,或是具有alter user的系统权限,使用 alter user 用户名 identified by 新密码。
3. 删除用户
概述:一般以dba的身份去删除某个用户,如果用其他用户去删除用户则需要具有 drop user 的权限。如果要删除的用户已经创建了表,那么就需要在删除时带一个 cascade 参数。
用法:drop user 用户名 [cascade];
4. 用户管理的综合案例
创建的新用户是没有任何权限的,甚至连登录的数据库的权限都没有,需要为其指定相应的权限。给一个用户赋权限使用grant命令,回收权限使用revoke命令。
只能使用system或sys用户给skycloud用户赋权限。
grant connect to skycloud;
准确的讲,这里的connect不能算是权限,应该算为角色。为skycloud用户赋了connect角色后,skycloud用户就可以连接数据库了(其实只需具有create sesion权限,用户就可以连接数据库)。这里涉及到了权限和角色的概念,下面将介绍oracle中的权限和角色。
5. Oracle中的权限
概述:oracle中的权限是Oracle事先定义好的,分为系统权限和对象权限两种。
(1). 系统权限:用户对数据库的相关权限,例:建库、建表、建索引、建存储过程、修改密码,大概有140多种。
(2). 对象权限:用户对其他用户的数据对象操作的权限,例:该用户的表、视图、存储过程、触发器,oracle关键的对象权限有25种。
对象权限的案例
希望skycloud用户去访问scott用户的emp表。
用scott用户授访问emp表的权限给skycloud。
grant select on emp to skycloud;
授权后,要使用 select * from scott.emp 查询,这里的scott,术语叫方案。每个用户都对应一个方案,用来存储该用户的表、视图、存储过程、触发器等。
6. Oracle中的角色
概述:在oracle中,由于权限太多,对于管理员赋权限太麻烦,oracle提出角色的概念,oracle事先定义了一些角色,例 connect 角色,把一些基本的权限交给角色,直接赋角色,类似于批量赋权限。拥有一个角色,就拥有多个权限,例如 connect 角色中包括 create session 和其它的一些的权限。角色分为预定义角色和自定义角色。
(1). 预定义角色:安装oracle数据库后,就存在的角色,例如 connect、dba、resource。
(2). 自定义角色:用户在oracle数据库中自己定义的角色。
7. Oracle的同一数据库中可以建两个相同名字的表吗?
可以,因为在 oracle 的管理机制中,oracle 数据库的数据对象组织方式是以用户为单位进行组织的,就如 skycloud 可以有自己的 users 表,scott 用户也可以有自己的 users 表。
8. 用户对权限的维护
(1). scott希望收回skycloud对emp表的查询权限。
revoke select on emp from skycloud(收回权限的用户要与授权的用户相同)。
(2). 希望skycloud用户可以去查询scott的emp表,还希望skycloud可以把这个权限继续给别人。
grant select on emp to skycloud with grant option;
(3). 权限的传递
如果是对象权限,在后面加上 with grant option,可以使权限传递。
grant select on emp to skycloud with grant option;
conn skycloud1/skycloud1;
grant select on scott.emp to skycloud1;
如果是系统权限,在后面加上 with admin option,可以使权限传递。
grant connect to skycloud with admin option;
conn skycloud1/skycloud1;
grant connect to skycloud1;
如果scott把skycloud对emp表的查询权限回收,那么skycloud1会怎么样?
skycloud1的权限也被回收。
如果system把skycloud的connect权限回收,那么skycloud1会怎么样?
skycloud1的权限不会被回收。
总结:系统权限不会被级联回收,对象权限会被级联回收。
9. 使用profile管理用户口令
概述:profile 是口令限制、资源限制的命令集合,当建立数据库是,oracle 会自动建立名称为 default 的 profile,当建立用户没有指定 profile 选项,那 oracle 就会将 default 分配给用户。
(1). 账户锁定
指定该账户(用户)登录时最多可以输入密码的次数,也可以指定用户锁定的时间(天),一般用 dba 的身份去执行该命令。
案例:指定 skycloud 这个用户最多只能尝试 3 次登录,锁定时间为 2 天。
-- 创建profile文件
create profile lock_account limit failed_login_attempts 3 password_lock_time 2;
alter user skycloud profile lock_account;
(2). 账户解锁
alter user skycloud account unlock;
(3). 终止口令
为了让用户定期修改密码可以使用终止口令的指定来完成,同样这个命令也需要dba身份来操作。
案例:给前面创建的用户skycloud创建一个profile文件,要求该用户每隔 10 天要修改自己的登录密码,宽限期 2 天。
create profile myProfile limit password_life_time 10 password_grace_time 2;
alter user skycloud profile myProfile;
(4). 删除profile
当不需要某个 profile 文件时,可以删除该文件。
drop profile password_history [cascade];