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 ...
随机推荐
- 双调旅行商问题 (Bitonic TSP)
问题描写叙述: 上述问题能够使用动态规划的方法来解决. 以下是解决思路的详细介绍: 1. 最优子结构: 如果d[i][j]表示从起点1出发到达i及j两个顶点的最短路程之和. 为此能够如果K为此段路程上 ...
- 8 -- 深入使用Spring -- 3...1 Resource实现类ClassPathResource
8.3.1 Resource实现类------ClassPathResource : 访问类加载路径下的资源的实现类 2.访问类加载路径下的资源 ClassPathResource 用来访问类加载路径 ...
- Git Step by Step – (5) Git分支(branch)
在前面两盘文章中介绍了Git的基本原理,都是理论知识.这篇文章我们再次回到实践中,看看Git分支(branch)的使用. 在代码版本控制工具中,都会有branch的概念.刚开始建立版本仓库的时候,我们 ...
- Winform判断EventHandler是否已经添加
斜体部分替换成自己需要的 private bool HasValueChangedEventHandler(DateTimePicker b) { FieldInfo f1 = typeof(Date ...
- 【代码审计】BootCMS v1.1.3 文件上传漏洞分析
0x00 环境准备 BootCMS官网:http://www.kilofox.net 网站源码版本:BootCMS v1.1.3 发布日期:2016年10月17日 程序源码下载:http://w ...
- iOS - 白名单应用间相互跳转
1. 应用间相互跳转简介 在iOS开发的过程中,我们经常会遇到需要从一个应用程序A跳转到另一个应用程序B的场景.这就需要我们掌握iOS应用程序之间的相互跳转知识. 下面来看看我们在开发过程中遇到的应用 ...
- cp自动创建层级结构的例子
一个拷贝命令的技巧,不仅拷贝文件,而且拷贝目录结构.记录下来. *拷贝的时候,自动创建参数中源文件的路径:#cp --parents parentdir1/parentdir2/sourcefile ...
- 在centos7 ubuntu15.04 上通过bosh-lite 搭建单机环境cloudfoundry
Bosh-lite简介 bosh-lite 是一个单机部署cloudfoundry的实验性工具,用于开发人员做poc 验证.Bosh-lite目前支持仅MAC OS X和Linux系统.B ...
- Win7/Win8/IIS7/IIS8配置ASP/ACCESS
1.在IIS信息服务管理器配置好站点后,配置ASP属性: a.IIS启用ASP 1.打开控制面板>>程序和功能>>“打开或关闭windows功能”,见下图 2.稍等片刻,出现一 ...
- 【规范】alibaba编码规范阅读
一.编程规范 (一)命名规范 1.代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束 2.代码中的命名严禁使用评语与英文混合的方式,更不允许直接使用中文的方式 3.类名使用Uppe ...