SQL Fundamentals || DCL(Data Control Language) || 系统权限&对象权限管理(GRANT&REVOKE)
语句 |
解释 |
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多种的系统权限,并且不同的数据库版本相应的权限数也会增加。 系统规定用户使用数据库的权限。(系统权限是对用户而言) |
对象权限 |
维护数据库中对象的能力,即:由一个用户操作另外一个用户的对象。 对象权限指的是数据库之中某一个对象所拥有的权限, 即:可以通过某一个用户的对象权限,让其他用户来操作本用户中的所有授权的对象。 在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)的更多相关文章
- SQL Fundamentals || DCL(Data Control Language) || 角色ROLES
SQL Fundamentals || Oracle SQL语言 语句 解释 Create user Creates a user(usually performed by a DBA) Grant ...
- SQL Fundamentals || DCL(Data Control Language) || 用户管理&Profile概要文件
SQL Fundamentals || Oracle SQL语言 语句 解释 Create user Creates a user(usually performed by a DBA) Grant ...
- 在CDS(Core Data Services)中使用DCL(Data Control Language)
最近,我在玩ABAP CDS视图,并且遇到了一些权限方面的挑战.我在网上没看到有多少有关CDS开发的文档,因为它是个相当新的东西.因此,我决定写下这篇博客,也许我的想法可以帮助到一些人. 和你已经意识 ...
- 【HICP Gauss】数据库 数据库管理(文件 用户管理 系统权限 对象权限 profile)-7
数据库运行 依赖不同类型的文件 ,数据文件 参数文件 控制文件 redo日志文件 运行日志文件 审计日志文件等 数据文件 就是表空间文件 存储数据库的数据文件 参数文件 用户修改的配置信息 控制文件 ...
- Oracle_系统和对象权限管理
授予系统权限: GRANT { system_privilege | role } [,{ system_privilege | role }]... ... TO {user | role | PU ...
- MYSQL用户权限管理(Grant,Revoke)
MySQL可以为不同的用户分配严格的.复杂的权限.这些操作大多都可以用SQL指令Grant(分配权限)和Revoke(回收权限)来实现. Grant可以把指定的权限分配给特定的用户,如果这个用户不存在 ...
- mysql 权限管理 grant revoke
grant all privileges on database.table to 'user'@'ip' identified by 'passwd' with grant option; g ...
- SQL Fundamentals || Oracle SQL语言
对于SQL语言,有两个组成部分: DML(data manipulation language) 它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据 ...
- Chapter 3 Protecting the Data(1):理解权限
原文出处:http://blog.csdn.net/dba_huangzj/article/details/39548665,专题目录:http://blog.csdn.net/dba_huangzj ...
随机推荐
- Oracle分析関数
Oracleの分析関数のサンプル集 概要 Oracleコミュニティでよく見かける分析関数の使用例を 習うより慣れろ形式で.分析関数のイメージを付けて.まとめて紹介します. Oracle11gR1で動作 ...
- Floyd 和 bellman 算法
Floyd-Warshall算法(Floyd-Warshall algorithm)是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题,同时也被用于计算有向图的传递闭包. F ...
- graphicsmagick常用命令
显示图像文件详细信息 gm identify a.jpg 1.更改当前目录下.jpg的尺寸大小,并保存于目录.thumb里面 gm mogrify -output-directory .thumbs ...
- js防止表单重复提交
1.表单 <form id="addForm" onsubmit="getElementById('submitInput').disabled=true;retu ...
- python 学习笔记---文件处理
1.打开文件读取数据 f =open(“wenjian.txt”,"r") print(f) f.close() 直接变成列表--->list(f) for each_lin ...
- AutoLayout深入浅出五[UITableView动态高度]
本文转载至 http://grayluo.github.io//WeiFocusIo/autolayout/2015/02/01/autolayout5/ 我们经常会遇到UITableViewCell ...
- Java枚举根据key获取value
package com.utcip.crm.common.constants; import com.utcip.crm.common.base.process.ScheduleStatusEnum; ...
- 《转》python学习(10)-集合
转自 http://www.cnblogs.com/BeginMan/p/3160565.html 一.目录 1.集合概述 2.关于集合的操作符.关系符号 3.集合的一系列操作(添加.更新.访问.删除 ...
- Android设计和开发系列第一篇:Notifications通知(Develop—API Guides)
Notifications IN THIS DOCUMENT Design Considerations Creating a Notification Required notification c ...
- Post Office Protocol --- pop协议
https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol