解析grant connect, resource to user语句

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 今天同事问了一个问题:“创建用户分配的权限是:grant connect,resource to user;,但是建立view的时候失败了,错误是权限不够,后来我给这个用户分配了创建view的权限,然后创建view才可以成功。

今天同事问了一个问题:“创建用户分配的权限是:grant connect,resource to user;,但是建立view的时候失败了,错误是权限不够,后来我给这个用户分配了创建view的权限,然后创建view才可以成功。我有个疑问就是为什么用户在自己的空间没办法直接建立view,还得增加创建view的权限才可以?”


我们知道,创建一个新用户时,网上各种的帖子包括书籍中经常用到一个grant connect,resource to user;,这样才能用这个用户登录数据库,那么这条语句的真正作用是什么呢?


1、首先,grant XXX to user;,grant是授权的作用,这里的XXX可以是一个角色role,也可以是权限,例如grant role to user;,或grant insert on table to user;。

MOS中给出的标准SQL语句:

创建角色:

create role <role name> [IDENTIFIED BY <password>/USING <package>/EXTERNALLY/GLOBALLY ];

赋予角色权限:

grant <object/system privilege> to <role name>;

从角色收回权限:

revoke <privilege> from <role name>;

将角色赋予另一个角色或用户:

grant <role> to <username or role> ;


2、其次,connect和resource是两个系统内置的角色,和dba是并列的关系。

参考一些帖子的说法,权限可以分为两类:

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

实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。

接下来看系统权限,

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

RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。

CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。

对于普通用户:授予connect, resource权限。 

对于DBA管理用户:授予connect,resource, dba权限。

系统权限只能由DBA用户授出:sys, system(最开始只能是这两个用户)。普通用户通过授权可以具有与system相同的用户权限,

但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收。

另外,对于WITH ADMIN OPTION级联授权的问题,

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

系统权限并不会级联取消这些用户的相同权限。 

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

直接收回C用户的权限。


3、证明下为什么resource和connect的角色不能创建视图。

SQL> select role, count(*) from role_sys_privs group by role;

ROLE                                    COUNT(*)

------------------------------ ----------

EXP_FULL_DATABASE            8

DBA                                      160

SCHEDULER_ADMIN             6

RESOURCE                            8

IMP_FULL_DATABASE           68

CONNECT                             1

可以看到RESOURCE和CONNECT具有的权限个数。


下面看看各自都有什么权限:

SQL> select grantee,privilege from dba_sys_privs where grantee='RESOURCE' order by privilege;

GRANTEE                              PRIVILEGE

------------------------------ ----------------------------------------
RESOURCE                            CREATE CLUSTER
RESOURCE                            CREATE INDEXTYPE
RESOURCE                            CREATE OPERATOR
RESOURCE                            CREATE PROCEDURE
RESOURCE                            CREATE SEQUENCE
RESOURCE                            CREATE TABLE
RESOURCE                            CREATE TRIGGER
RESOURCE                            CREATE TYPE
8 rows selected.

SQL> select grantee,privilege from dba_sys_privs where grantee='CONNECT' order by privilege;

GRANTEE                              PRIVILEGE
------------------------------ ----------------------------------------
CONNECT                             CREATE SESSION


结果不言自明了,CREATE VIEW权限并不在这两个角色中,因此需要额外grant CREATE VIEW to user;,才能让这用户可以创建视图。往往实验是最好的老师,这次又证明了这点。

目录
相关文章
|
7月前
|
Java 数据库连接 API
SpringBoot【问题 01】借助@PostConstruct解决使用@Component注解的类用@Resource注入Mapper接口为null的问题(原因解析+解决方法)
SpringBoot【问题 01】借助@PostConstruct解决使用@Component注解的类用@Resource注入Mapper接口为null的问题(原因解析+解决方法)
802 0
|
Java Spring
解析Spring注解:@Resource与@Autowired的区别
在Spring框架中,依赖注入是实现松耦合、可维护性高的应用的重要方式之一。`@Resource`和`@Autowired`是两个常用的注解,用于实现依赖注入。然而,它们在用法和特点上有所不同。本文将详细介绍`@Resource`和`@Autowired`之间的区别,以及在Spring应用中的应用场景。
326 0
|
Java Unix Linux
Linux系统之User CPU time解析
在Linux操作系统中,通常采用8个不同的指标来研究Unix / Linux操作系统中的CPU消耗:用户CPU时间(us)、系统CPU时间(sy)、良好的CPU时间(ni)、空闲CPU时间(id)、等待CPU时间(wa)、硬件中断CPU时间(hi),软件中断CPU时间(si),被盗CPU时间(st)。在本文中,我们主要对“用户CPU时间”进行解析。
563 0
Golang:user_agent解析HTTP用户代理User Agents
Golang:user_agent解析HTTP用户代理User Agents
260 0
|
XML 存储 Java
SpringIOC源码解析(4)—— Resource、ResourceLoader、容器之间的微妙关系
Resource家族 EncodedResource AbstractResource WritableResource 根据资源地址自动选择正确的Resource ResourceLoader ResourceLoader 的使用者BeanDefinitionReader 利器的使用者 BeanDefinitionReader体系结构 XmlBeanDefinitionReader
SpringIOC源码解析(4)—— Resource、ResourceLoader、容器之间的微妙关系
|
XML 存储 人工智能
Spring 5 中文解析核心篇-IoC容器之Resource
本章节主要描述:Spring 5 中文解析核心篇-IoC容器之Resources。
351 0
|
SQL NoSQL MySQL
从源码解析ERROR 1129 (HY000)(2)以及unauthenticated user
原创 水平有限,只为抛砖,有误请指出 这里主要找一下m_connect是什么,以及怎么增加的,因为前文我没有找到,再次用断点的方式 描述一下unauthenticated user 一、m_connect是什么怎么增加的 m_connect实际上就是m_han...
1151 0
|
分布式计算 调度 Spark
Spark 动态资源分配(Dynamic Resource Allocation) 解析
Spark 默认采用的是资源预分配的方式。这其实也和按需做资源分配的理念是有冲突的。这篇文章会详细介绍Spark 动态资源分配原理。
4358 0
|
1月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
76 2
|
1天前
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析

推荐镜像

更多