现在的位置: 首页 > 综合 > 正文

Oracle用户管理

2012年06月14日 ⁄ 综合 ⁄ 共 2870字 ⁄ 字号 评论关闭

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];

 

【上篇】
【下篇】

抱歉!评论已关闭.