语句

解释

Create user

Creates a user(usually performed by a DBA)

Grant

Gives other users privileges to access the objects

Create role

Creates a collection of privileges, usually performed by a DBA

Alter user

Changes a user's password

Revoke

Removes privileges on an object from users

通过数据字典查询

数据字典视图

描述

dba_users

用户

dba_ts_quotas

每个用户空间使用配额

dba_profiles

查询profile文件

dba_sys_privs

查询用户权限

dba_roles

查看角色

ROLE_SYS_PRIVS

授予角色的系统权限

ROLE_TAB_PRIVS

授予角色的表权限

USER_ROLE_PRIVS

授予用户的角色

USER_SYS_PRIVS

授予用户的系统权限

USER_TAB_PRIVS_MADE

用户对象上授予的权限

USER_TAB_PRIVS_RECD

授予用户的对象权限

USER_COL_PRIVS_MADE

用户某列上授予的对象权限

USER_COL_PRIVS_RECD

授予用户某列上的对象权限

权限管理

  • Oracle系统权限与对象权限的划分;
  • 用户的授权操作GRANT与权限回收REVOKE操作;

权限分类

所有的权限应该由DBA进行控制,在SQL语句规范之中针对于权限的控制提供了两个核心的操作命令:

  • GRANT(授权)
  • REVOKE(回收权限)

系统权限

进行数据库资源操作的权限,例如:创建数据表、索引等权限;

系统权限主要指的是资源操作的权限,

系统权限是在数据库中执行某种特定操作的权利,系统权限并不针对某个特定的对象,而是针对整个数据库范围。

系统权限针对的是全局用户。

例如:数据库管理员(DBA)是数据库系统中级别最高的用户,它拥有一切的系统权限以及各种资源的操作能力。

在Oracle中有100多种的系统权限,并且不同的数据库版本相应的权限数也会增加。

系统规定用户使用数据库的权限。(系统权限是对用户而言)

对象权限

    • TABLE,VIEW,Sequence 等为对象,在对象上的权限为对象权限,这个权限不是全局的.系统权限是全局的.
    • 每种对象的权限都不同
    • 对象宿主拥有在对象上全部的权限
    • 对象宿主能授予对象权限给其他用户
    • 对象权限指的是数据库之中某一个对象所拥有的权限,
    • 即:可以通过某一个用户的对象权限,让其他用户来操作本用户中的所有授权的对象。

    维护数据库中对象的能力,即:由一个用户操作另外一个用户的对象。

    对象权限指的是数据库之中某一个对象所拥有的权限,

    即:可以通过某一个用户的对象权限,让其他用户来操作本用户中的所有授权的对象。

    在Oracle之中一共定义了八种对象权限,分别是:SELECT、INSERT、UPDATE、DELETE、EXECUTE、ALTER、INDEX、REFERENCES。

系统权限

系统权限分类:

DBA

拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构

RESOURCE

拥有Resource权限的用户只可以创建对象,不可以创建数据库结构

CONNECT

拥有Connect权限的用户只可以登录oracle,不可以创建对象,不可以创建数据库结构

对于普通用户

授予connect, resource权限。

对于DBA管理用户

授予connect,resource, dba权限

常用的系统权限有:

CREATE SESSION

连接到数据库上

CREATE SEQUENCE

创建序列,序列是一系列数字,通常用来自动填充主键列

CREATE SYNONYM  

创建同名对象

CREATE TABLE  

创建表

CREATE ANY TABLE

在任何模式中创建表

DROP TABLE

删除表

DROP ANY TABLE   

删除任何模式中的表

CREATE PROCEDURE

创建存储过程

EXECUTE ANY PROCEDURE

执行任何模式中的存储过程

CREATE USER

创建用户

DROP USER   

删除用户

CREATE VIEW

创建视图

为用户授权

  • 系统权限只能由DBA用户授出:sys,system(最开始只能是这两个用户)
  • 普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收。
  • 授权语法:

GRANT 权限 , …

TO [用户名 , … | 角色名 , …. | PUBLIC]

[WITH ADMIN OPTION] ;

  • 语法解释:

权限:

主要指的是各个系统权限

TO:

设置授予权限的用户、角色或者是使用PUBLIC将此权限设置为公共权限;

WITH ADMIN OPTION:

将用户授予的权限继续授予其他用户,则得到的权限可以传递。

  • 范例

为c##wendy用户授予CREATE SESSION权限,这样用户就可以登录了.

GRANT CREATE SESSION TO c##wendy ;

为c##wendy用户授权;

12C以前的oracle版本在授权后需要重新登录,只有登录时会取权限。

12C是动态取得权限.

GRANT CREATE TABLE , CREATE SEQUENCE , CREATE VIEW TO c##wendy WITH ADMIN OPTION ;

利用c##wendy用户登录,而后将创建表、以及创建序列的权限授予c##gaga用户

GRANT CREATE TABLE , CREATE SEQUENCE TO c##gaga ;

撤消权限

  • 撤消权限语法:

REVOKE 权限 , ... FROM 用户名 ;

  • 范例

将c##wendy用户的CREATE VIEW、CREATE TABLE权限回收

REVOKE CREATE TABLE , CREATE VIEW FROM c##wendy;

通过c##wendy用户回收c##gaga用户的CREATE SEQUENCE权限

REVOKE CREATE SEQUENCE FROM c##gaga ;

说明:

1)如果使用WITH ADMIN OPTION为某个用户授予系统权限,那么对于被这个用户授予相同权限的所有用户来说,取消该用户的系统权限并不会级联取消这些用户的相同权限。

2)系统权限无级联,即A授予B权限,B授予C权限,如果A收回B的权限,C的权限不受影响;系统权限可以跨用户回收,即A可以直接收回C用户的权限。

对象权限

  • 在Oracle之中一共定义了八种对象权限,分别是:SELECT、INSERT、UPDATE、DELETE、EXECUTE、ALTER、INDEX、REFERENCES。

对象权限

表(Table)

序列(Sequence)

视图(View)

子程序(Procedure)

查询(SELECT)

增加(INSERT)

更新(UPDATE)

删除(DELETE)

执行(EXECUTE)

修改(ALTER)

索引(INDEX)

关联(REFERENCES)

授予对象权限

  • GRANT 对象权限 | ALL [(列 , ...)]

ON 对象

TO [用户名 | 角色名 | PUBLIC]

[WITH GRANT OPTION] ;

语法组成:

对象权限

指的是表所列出的权限标记,如果设置为ALL表示所有对象权限;

ON

要授予权限的对象名称;

TO

将此权限授予的用户名称或角色名称,如果设置为PUBLIC表示为公共权限;

WITH GRANT OPTION:

允许授权用户继续授权其他用户。

  • 范例

为c##wendy用户授予c##scott用户dept表的查询以及增加权限

GRANT SELECT , INSERT ON c##scott.dept TO c##wendy ;

将c##scott.dept数据表更新部门编号(dname)的权限授予c##wendy用户

GRANT UPDATE(dname) ON c##scott.dept TO c##wendy ;

允许系统上的所有用户从wendy的t表中查询数据:

GRANT select

ON         wendy.t

TO          PUBLIC;

将表的操作权限授予全体用户:

grant all on product to public//public 表示所有的用户

从数据字典中查询当前用户授权权限.

SELECT * FROM user_tab_privs_recd;

回收对象权限

  • 如果要对对象权限进行回收,则继续使用REVOKE语句完成。

REVOKE [权限 , .... | ALL]

ON 对象

FROM [用户 , .... | 角色 | PUBLIC] ;

  • 回收c##scott.dept上的相关权限

REVOKE SELECT , INSERT ON c##scott.dept FROM c##wendy ;

REVOKE UPDATE ON c##scott.dept FROM c##wendy ;

如果取消某个用户的对象权限,那么对于这个用户使用WITH GRANT OPTION授予权限的用户来说,同样还会取消这些用户的相同权限,也就是说取消授权时级联的。

SQL Fundamentals || DCL(Data Control Language) || 系统权限&对象权限管理(GRANT&REVOKE)的更多相关文章

  1. SQL Fundamentals || DCL(Data Control Language) || 角色ROLES

    SQL Fundamentals || Oracle SQL语言 语句 解释 Create user Creates a user(usually performed by a DBA) Grant ...

  2. SQL Fundamentals || DCL(Data Control Language) || 用户管理&Profile概要文件

    SQL Fundamentals || Oracle SQL语言 语句 解释 Create user Creates a user(usually performed by a DBA) Grant ...

  3. 在CDS(Core Data Services)中使用DCL(Data Control Language)

    最近,我在玩ABAP CDS视图,并且遇到了一些权限方面的挑战.我在网上没看到有多少有关CDS开发的文档,因为它是个相当新的东西.因此,我决定写下这篇博客,也许我的想法可以帮助到一些人. 和你已经意识 ...

  4. 【HICP Gauss】数据库 数据库管理(文件 用户管理 系统权限 对象权限 profile)-7

    数据库运行 依赖不同类型的文件 ,数据文件 参数文件 控制文件 redo日志文件 运行日志文件 审计日志文件等 数据文件 就是表空间文件 存储数据库的数据文件 参数文件 用户修改的配置信息 控制文件 ...

  5. Oracle_系统和对象权限管理

    授予系统权限: GRANT { system_privilege | role } [,{ system_privilege | role }]... ... TO {user | role | PU ...

  6. MYSQL用户权限管理(Grant,Revoke)

    MySQL可以为不同的用户分配严格的.复杂的权限.这些操作大多都可以用SQL指令Grant(分配权限)和Revoke(回收权限)来实现. Grant可以把指定的权限分配给特定的用户,如果这个用户不存在 ...

  7. mysql 权限管理 grant revoke

    grant all privileges  on  database.table to 'user'@'ip' identified by 'passwd' with grant  option; g ...

  8. SQL Fundamentals || Oracle SQL语言

    对于SQL语言,有两个组成部分: DML(data manipulation language) 它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据 ...

  9. Chapter 3 Protecting the Data(1):理解权限

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/39548665,专题目录:http://blog.csdn.net/dba_huangzj ...

随机推荐

  1. Oracle分析関数

    Oracleの分析関数のサンプル集 概要 Oracleコミュニティでよく見かける分析関数の使用例を 習うより慣れろ形式で.分析関数のイメージを付けて.まとめて紹介します. Oracle11gR1で動作 ...

  2. Floyd 和 bellman 算法

    Floyd-Warshall算法(Floyd-Warshall algorithm)是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题,同时也被用于计算有向图的传递闭包. F ...

  3. graphicsmagick常用命令

    显示图像文件详细信息 gm identify a.jpg 1.更改当前目录下.jpg的尺寸大小,并保存于目录.thumb里面 gm mogrify -output-directory .thumbs ...

  4. js防止表单重复提交

    1.表单 <form id="addForm" onsubmit="getElementById('submitInput').disabled=true;retu ...

  5. python 学习笔记---文件处理

    1.打开文件读取数据 f =open(“wenjian.txt”,"r") print(f) f.close() 直接变成列表--->list(f) for each_lin ...

  6. AutoLayout深入浅出五[UITableView动态高度]

    本文转载至 http://grayluo.github.io//WeiFocusIo/autolayout/2015/02/01/autolayout5/ 我们经常会遇到UITableViewCell ...

  7. Java枚举根据key获取value

    package com.utcip.crm.common.constants; import com.utcip.crm.common.base.process.ScheduleStatusEnum; ...

  8. 《转》python学习(10)-集合

    转自 http://www.cnblogs.com/BeginMan/p/3160565.html 一.目录 1.集合概述 2.关于集合的操作符.关系符号 3.集合的一系列操作(添加.更新.访问.删除 ...

  9. Android设计和开发系列第一篇:Notifications通知(Develop—API Guides)

    Notifications IN THIS DOCUMENT Design Considerations Creating a Notification Required notification c ...

  10. Post Office Protocol --- pop协议

    https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol