ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle用户管理(转)

Oracle用户管理(转)

原创 Linux操作系统 作者:huojiao2006 时间:2012-05-27 13:34:59 0 删除 编辑

一、Oracle用户管理

创建用户,需要DBA权限

命令:create user 【用户名】identified by 【密码】

修改密码

命令:password 【用户名】 ( 在用户已经连接的情况下 )

注意:在给其他用户修改密码时  需要具有DBA的权限或拥有alter user的系统权限

命令:alter user 【用户名】 identified by 【新密码】

删除用户

一般以DBA身份去删除用户

如果要删除的用户,已经创建了表,要在删除时加上一个参数 cascade

命令:drop user 【用户名】 [cascade]

二、权限和角色

刚刚创建完的新用户是没有任何权限的,甚至连登录数据库的权限都没有。这是时候使用conn 【用户名】/【密码】会提示没有权限

在新建一个用户之后还要对这个用户进行授权操作。当然了,要使用有能力授权的用户,如sys、system

权限包含系统权限对象权限

系统权限:用户对数据库的相关权限

对象权限:用户对其他用户的数据对象操作的权限

角色

角色是指由系统权限集合。通常给某个用户授予权限时如果没有角色存在的话,那么需要一条一条的操作,角色的存在

就是使得授权变得很方便。通常一个角色由多个系统权限组成。常用的角色有三个connect(7种权限)、dba、resource(在任何表空间建表)。

这里只是简单的提一下,在以后会作为一个专题进行研究。

使用grant命令给用户分配权限

grant 【权限名】 to 【用户名】

分配角色

grant 【角色名】 to 【用户名】

收回权限

revoke 【权限名】 from 【用户名】

举个例子来说明:

1、创建用户

create user stu identified by stu;

2、使stu能够被连接

grant create session to stu;

3、让stu能够在任何表空间下建表

grant resource to stu

3、创建一个简单的表

create table users(name varchar2(10),age number(2));

4、插入几条数据

insert into users values('houjinxin',22);

5、登录到scott给stu授权让stu可以查看scott下的emp表

grant select on emp to stu;

6、登录到stu下查看emp表

select * from scott.emp;

如果这时想要更新scott.emp中的数据

update scott.emp set ename='ok2' where ename='ok';

会提示ORA-01031: 权限不足 。因为scott只给了stu查看的权利,如果仍然想更新,要到scott下进行授权

7、登录到system下收回resource角色

revoke resource from stu;

8、登录scott下收回select 权限

revoke select on emp from stu;

这是stu就不能再查询scott.emp的数据了

权限的传递

当希望stu用户可以去查询scott的emp表时,还希望stu能够把这个权限继续传给其他用户时

如果要传递的是对象权限,就加入with grant option

grant select on emp to stu with grant option

如果是系统权限:就加上with admin option

grant connect to stu with admin option

当system给stu授权时,会给stu给其他用户授权的能力

做个实验来验证下

1、登录到system用户下,重新建立两个用户

create user hou identified by hou;

create user jin identified by jin;

并为hou分配connect角色

grant connect to hou with admin option;

2、登录到scott下个hou授权

grant select on emp to hou with grant option;

3、登录到hou下开始对jin授权

grant select on scott.emp to jin;

grant connect to jin;

4、登录到jin下查询scott.emp

select * from scott.emp;

到目前位置都正常,问题来了!

如果system收回分配给hou的权限,那么jin的权限会不会也被一起收回,继续实验。

5、登录到scott下收回hou的权限

revoke select on emp from hou;

revoke connect from hou;

6、登录到jin下看现象

发现仍然能够登录到jin上这说明connect角色并未被收回

而当查询scott.emp时却提示ORA-00942: 表或视图不存在

这说明系统权限和对象权限是不同的。对于系统权限,hou分配给jin之后不再收回,对象权限却随着hou的权限被收回也被同时收回了

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21634320/viewspace-731057/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-05-19

  • 博文量
    28
  • 访问量
    46249