指引网

当前位置: 主页 > 数据库 > Oracle >

Oracle学习笔记13--控制用户权限

来源:网络 作者:佚名 点击: 时间:2018-01-13 06:39
[摘要] 数据库控制语言的功能室控制用户对数据库的存取权限。用户对某类数据具有何种操作权限是有DBA决定的。Oracle通过GRANT语句完成权限的授予,通过REVOKE语句完成对权限的收回。权限分为系统权

数据库控制语言的功能室控制用户对数据库的存取权限。用户对某类数据具有何种操作权限是有DBA决定的。Oracle

通过GRANT语句完成权限的授予,通过REVOKE语句完成对权限的收回。

权限分为系统权限和对象权限;系统权限是对于数据库的权限,对象权限是操作数据库对象的权限。

创建用户

基本语法:

CREATE USER user_name

IDENTIFIED BY password;

在用户创建成功之后,系统管理员DBA会赋予用户一些权限,来完成相应的操作。不具有某些操作权限的用户,是无

法完成操作的。

例:创建用户test ,密码:test001

create user test
identified by test001

但是让使用上面创建的用户和密码进行登录时确无法登录成功。因为该没用没有create session 权限。要授予该权限则要使用grant语句。

授予权限

基本语法:

GRANT 权限1 ,权限2,... TO user_name ;

应用程序开发者,一般应该具有以下权限:

CREATE SESSION(创建会话) CREATE TABLE(创建表) CREATE SEQUENCE(创建序列) CREATE VIEW(创建视图) CREATE PROCEDURE(创建过程)

例:给test用户授予创建会话权限。

grant create session to test ;

将create session 赋予用户之后,就可以正常的与数据库连接了,表示已经创建了一个session 会话。此时如果该用

户要创建表,序列,视图,则要授予上面的全部权限。在授予了create table 的权限之后,还是无法创建表的,因为

此时是没有表空间。还要分配表空间才能创建表。

上面的操作还是比较的繁琐的,其实可以把多个权限封装成一个角色,在把该角色赋予给用户。

角色

创建角色:

CREATE ROLE testrole ;

为角色赋予权限:

GRANT CREATE TABLE , CREATE VIEW TO testrole ;

将角色授予用户:

GRANT testrole TO test ;

Oracle 中提供了两个主要的角色:CONNECT ,RESOURCE 。可以直接将这个两个角色授予给用户。

修改用户密码

基本语法

ALTER USER user_name

IDENTIFIED BY new_password ;

来修改密码。

分配对象权限

不同的对象具有不同的对象权限,对象的拥有者拥有所有权限,对象的拥有者可以向外分配权限。基本语法:
GRANT 操作 ON 其他用户.表名 TO 用户

例:如果test用户想要访问scott用户下的emp表,并进行查询、删除,则要取得访问该表的权限。

GRANT select , delete ON scott.emp TO test ;

此时test用户,便可以对emp表进行查询和删除操作 了 。

WITH GRANT OPTION 和PUBLIC 关键字。with grant option 是被授权的用户还可将获得的权限在授给其他

的用户。public 是为所有的用户都分配权利。

回收权限

基本语法

rovoke 权限 on 用户.表名称 from 用户 ;

例:回收test用户获得查询和删除权限

revoke select ,delete on scott.emp from test ;

除了使用语句创建权限之外,也可以直接在Enterprise Manager console 下进行创建。不在赘述。

------分隔线----------------------------