Oracle DB 关于CONNECT、RESOURCE 和DBA 角色权限
授予角色的语法:
grant
<object/system privilege>
to
<role
name
>;
一般情况下,在新建数据库用户后,都会习惯性的给用户授权CONNECT角色和RESOURCE角色:
GRANT connect,resource,dba TO 用户;
1、CONNECT 角色,拥有Connect权限的用户只可以登录ORACLE(仅具有创建SESSION的权限),不可以创建实体,不可以创建数据库结构。
2、RESOURCE 角色,是授予开发人员的。拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。同时,当把ORACLE resource角色授予一个user的时候,不但会授予ORACLE resource角色本身的权限,而且还有unlimited tablespace权限,但是,当把resource授予一个role时,就不会授予unlimited tablespace权限。
Create trigger--建立触发器;
Create sequence—建立序列;
Create type--建立类型;
Create procedure--建立过程;
Create cluster--建立聚簇;
Create operator--创建操作者;
Create indextype--创建索引类型;
Create table--建表。
3、DBA角色,--是授予数据库维护人员的。拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
从dba_sys_privs查看权限grantee privilege:
SQL>Select grantee,privilege from dba_sys_privs
Where grantee= 'DBA'
Order by privilege;
注意:
- 10g 开始,connect里面只有 create session权限了;
- resource权限里没有 create view;
- 还需要重点说明下的是 unlimited tablespace(授予了resource权限给user, user1 其实自动有了unlimited tablespace权限)
4、Unlimited tablespace的特点:
1、系统权限unlimited tablespace不能被授予role,只能被授予用户。也就是说,unlimited tablespace系统权限不能包含在一个角色role中
2、unlimited
tablespace没有被包括在resource role和dba role中,但是unlimited
tablespace随着resource或者dba的授予而授予用户的。也就是说,如果将role角色授予了某个用户,那么这个用户将会拥有unlimited
tablespace系统权限
3、unlimited
tablespace不能伴随这resource被授予role而授予用户。也就是说加入resource角色被授予了role_test角色,然后把role_test授予了test用户,但是此时unlimited
tablespace没有被授予test用户
5、数据字典dba_tab_privs
各个列属性描述如下:
GRANTEE :被授予权限的用户或角色
OWNER: 权限拥有者
TABLE_NAME:对象名字
GRANTOR:执行授予权限用户的名字
PRIVILEGE:对象的权限
GRANTABLE:是否授予GRANT OPTION权限
HIERARCHY:是否授予HIERARCHY OPTION
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?