Oracle 用户,角色,权限等
Posted 一泽涟漪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 用户,角色,权限等相关的知识,希望对你有一定的参考价值。
Oracle 用户,角色,权限等
权限管理是 Oracle 系统的精华,不同用户登录到同一数据库中,可能看到不同数量的表,拥有不同的权限。Oracle 的权限分为系统权限和数据对象权限,共一百多种,如果单独对用户授权,很囧,有一些用户需要的权限是相同的,就把这些用户归为同一类——某种角色,通过设立一些有预定权限的角色简化和明确授权操作,角色出现的动机也就是为了简化权限管理,它是权限的集合。一般做法是:系统把权限赋给角色,然后把角色赋给用户,当然也可以直接把某权限赋给用户。Oracle 提供细粒度的权限,可以对表的某一列单独设置权限,可以对某用户查询某表自动增添 where 限制条件。
权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级、System 系统级、Role 角色级。这些权限可以授予给用户、特殊用户public或角色,如果授予一个权限给特殊用户"Public"(用户public是oracle预定义的,每个用户享有这个用户享有的权限),那么就意味作将该权限授予了该数据库的所有用户。对管理权限而言,角色是一个工具,权限能够被授予给一个角色,角色也能被授予给另一个角色或用户。用户可以通过角色继承权限,除了管理权限外角色服务没有其它目的。权限可以被授予,也可以用同样的方式撤销。
Oracle 的角色存放在表 dba_roles 中,某角色包含的系统权限存放在 dba_sys_privs 中,包含的对象权限存放在 dba_tab_privs 中。
下面是“角色”、“用户”和“权限”的互查:
1. 用户
例:
@>conn system/888888 Connected. SYSTEM@userdata>create user user50 identified by user50; User created. SYSTEM@userdata>grant connect,resource to user50; Grant succeeded.
查看当前登录用户拥有的所有角色和系统权限
USER50@userdata>select * from session_privs; PRIVILEGE ------------------------------------------------------------------------------------------------------------------------ CREATE SESSION UNLIMITED TABLESPACE CREATE TABLE CREATE CLUSTER CREATE SEQUENCE CREATE PROCEDURE CREATE TRIGGER CREATE TYPE CREATE OPERATOR CREATE INDEXTYPE 10 rows selected. USER50@userdata>select * from role_sys_privs; ROLE PRIVILEGE ADMIN_OPT ---------------- ------------------------ --------- RESOURCE CREATE SEQUENCE NO RESOURCE CREATE TRIGGER NO RESOURCE CREATE CLUSTER NO RESOURCE CREATE PROCEDURE NO RESOURCE CREATE TYPE NO CONNECT CREATE SESSION NO RESOURCE CREATE OPERATOR NO RESOURCE CREATE TABLE NO RESOURCE CREATE INDEXTYPE NO 9 rows selected.
查看某一用户所拥有的角色和系统权限
SYSTEM@userdata>select * from dba_role_privs where GRANTEE=‘USER50‘; GRANTEE GRANTED_ROLE ADMIN_OPT DEFAULT_R ------------------------------ -------------------- --------- --------- USER50 RESOURCE NO YES USER50 CONNECT NO YES SYSTEM@userdata>select * from dba_sys_privs where GRANTEE=‘USER50‘; GRANTEE PRIVILEGE ADMIN_OPT ------------------------------ ------------------------------ --------- USER50 UNLIMITED TABLESPACE NO
查看某一用户拥有的对象权限
SYSTEM@userdata>grant select on scott.emp to user50; SYSTEM@userdata>select * from dba_tab_privs where GRANTEE=‘USER50‘; GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE HIERARCHY -------------------- --------------- --------------- --------------- --------------- --------- --------- USER50 SCOTT EMP SCOTT SELECT NO NO
权限分类
- 系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。
- 对象权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。
1. 系统权限管理
1.1 系统权限分类
- DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
- RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
- CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource, dba权限。
1.2 系统权限授权命令
[系统权限只能由DBA用户授出:sys, system]
授权命令:SQL> grant connect, resource, dba to 用户名1 [,用户名2]...;
[普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收。]
以上是关于Oracle 用户,角色,权限等的主要内容,如果未能解决你的问题,请参考以下文章
oracle 10g中权限分配问题 对于角色CONNECT,RESOURCE的权限我查看了, 我赋予一个用户这两个角色。