惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Security Latest
Security Latest
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Stack Overflow Blog
Stack Overflow Blog
WordPress大学
WordPress大学
N
Netflix TechBlog - Medium
GbyAI
GbyAI
云风的 BLOG
云风的 BLOG
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
宝玉的分享
宝玉的分享
博客园 - 【当耐特】
C
Cyber Attacks, Cyber Crime and Cyber Security
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
Threat Research - Cisco Blogs
NISL@THU
NISL@THU
Spread Privacy
Spread Privacy
P
Proofpoint News Feed
J
Java Code Geeks
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
MyScale Blog
MyScale Blog
T
Tor Project blog
P
Proofpoint News Feed
C
CERT Recently Published Vulnerability Notes
P
Privacy & Cybersecurity Law Blog
MongoDB | Blog
MongoDB | Blog
Simon Willison's Weblog
Simon Willison's Weblog
C
Cybersecurity and Infrastructure Security Agency CISA
L
LINUX DO - 热门话题
小众软件
小众软件
G
GRAHAM CLULEY
P
Privacy International News Feed
AWS News Blog
AWS News Blog
Know Your Adversary
Know Your Adversary
P
Palo Alto Networks Blog
人人都是产品经理
人人都是产品经理
S
Schneier on Security
Scott Helme
Scott Helme
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
B
Blog RSS Feed
T
The Exploit Database - CXSecurity.com
Recent Announcements
Recent Announcements
E
Exploit-DB.com RSS Feed
C
CXSECURITY Database RSS Feed - CXSecurity.com
U
Unit 42
The Register - Security
The Register - Security
S
Securelist
Martin Fowler
Martin Fowler
Project Zero
Project Zero
大猫的无限游戏
大猫的无限游戏
Cisco Talos Blog
Cisco Talos Blog

博客园 - dirgo

关于vxe-table v4 导出大数据量excel浏览器卡死问题的解决 开源的Linux换源和安装docker脚本 wsl常用命令 使用网页静默打印 Linux下查看当前哪些端口在监听状态,哪些端口在连接状态 mobaxterm常用配置 Windows下udp工具 Oracle表空间用户授权创建dblink等操作 用nmap扫描找出某个网段下空闲的ip脚本 Oracle 19c 常用运维 SQL Linux下设置CDB/PDB 环境的Oracle19c开机启动 Oracle是 CDB/PDB 环境下,让PDB在数据库启动后自动打开 怎样禁止dbeaver点击导航中数据库自动切换sql编辑器所属的数据库 Oracle 19c占内存高的解决方法 sudo -i -u zhangsan 与su - zhangsan区别,在现代 Linux 系统中,推荐使用 sudo 进行权限切换 Linux 的目录结构英文全称(及可能的命名背景)和更详细的说明 利用 Logback 的热加载特性,安全的迁移日志,改变日志保存路径 Linux中查询进程内存占用 iotDB调整内存占用及注意事项 Eclipse Milo 处理PLC"字(Word)"类型,最直接和正确的做法是使用其内置的 UShort 类型 centos7.9安装minio RELEASE.2025-04-22T22-12-26Z centos7.9编译安装nginx 1.28.1 linux(centos7.9)编译安装redis7.2.4 UFW 防火墙常用命令速查表
在Oracle中,授予用户角色和权限
dirgo · 2026-04-21 · via 博客园 - dirgo

在Oracle中,授予用户角色和权限主要使用 GRANT 语句。为了保持数据库的安全和清晰,Oracle的权限管理分为三个层级:系统权限对象权限角色
以下是具体的操作语法和常见示例:

一、 授予系统权限

系统权限允许用户执行特定的数据库级操作,比如连接数据库、创建表、创建视图、创建用户等。
语法:

GRANT 系统权限1, 系统权限2 TO 用户名 [WITH ADMIN OPTION];

常见示例:

-- 允许用户连接数据库并创建表
GRANT CREATE SESSION, CREATE TABLE TO test_user;
-- 允许用户创建视图、序列、同义词
GRANT CREATE VIEW, CREATE SEQUENCE, CREATE SYNONYM TO test_user;
-- 允许用户在任意表空间创建表(需谨慎)
GRANT UNLIMITED TABLESPACE TO test_user;

注:WITH ADMIN OPTION 表示该用户不仅拥有了该权限,还可以把这个权限再授予其他用户。

二、 授予对象权限

对象权限允许用户对特定的对象(如表、视图、存储过程等)进行操作(如 SELECT, UPDATE, DELETE 等)。
语法:

GRANT 对象权限1, 对象权限2 ON 所有者.对象名 TO 用户名 [WITH GRANT OPTION];

常见示例:

-- 允许 test_user 查询和修改 scott 用户的 emp 表
GRANT SELECT, UPDATE ON scott.emp TO test_user;
-- 允许 test_user 执行某个存储过程
GRANT EXECUTE ON scott.my_procedure TO test_user;
-- 赋予某个表的所有权限(ALL)
GRANT ALL ON scott.emp TO test_user;

注:WITH GRANT OPTION 表示该用户不仅可以操作这个表,还可以把对这个表的权限授予其他用户。(注意:这里用的是 GRANT OPTION,与系统权限的 ADMIN OPTION 不同)。

三、 授予角色

角色是一组权限的集合。通过授予角色,可以一次性赋予用户多个权限,这是最推荐的权限管理方式。
语法:

GRANT 角色名1, 角色名2 TO 用户名 [WITH ADMIN OPTION];

常见示例:

-- 授予最常用的基础角色(注:Oracle 12c 之后 CONNECT 角色仅包含 CREATE SESSION)
GRANT CONNECT TO test_user;
-- 授予开发常用角色(包含创建表、序列、触发器等系统权限)
GRANT RESOURCE TO test_user;
-- 授予DBA角色(拥有几乎所有权限,极其危险,生产环境严禁轻易授予)
GRANT DBA TO test_user;
-- 授予自定义角色(假设之前已经创建了一个角色 ROLE_DEV)
GRANT ROLE_DEV TO test_user;

四、 配合使用:赋予表空间配额

非常重要:如果你只赋予了用户 CREATE TABLE(无论是直接给还是通过 RESOURCE 角色),但没有给它在特定表空间的配额,用户在创建表时依然会报错(ORA-01950: no privileges on tablespace 'XXX')。
语法:

ALTER USER 用户名 QUOTA 大小 ON 表空间名;

示例:

-- 给 test_user 在 USERS 表空间分配 100M 的配额
ALTER USER test_user QUOTA 100M ON USERS;
-- 给 test_user 在 USERS 表空间分配 无限 大小的配额
ALTER USER test_user QUOTA UNLIMITED ON USERS;

五、 综合实战:创建一个标准的开发用户

在实际工作中,创建一个新开发用户的完整流程通常是这样的:

-- 1. 创建用户(指定密码和默认表空间)
CREATE USER dev_user IDENTIFIED BY Dev123456
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;
-- 2. 授予基础角色(能登录、能建开发对象)
GRANT CONNECT, RESOURCE TO dev_user;
-- 3. 分配表空间配额(建表需要空间)
ALTER USER dev_user QUOTA UNLIMITED ON USERS;
-- 4. 授予特定业务表的查询权限(比如只读其他业务线的数据)
GRANT SELECT ON prod_core.orders TO dev_user;
GRANT SELECT ON prod_core.customers TO dev_user;

补充:如何撤销权限?

使用 REVOKE 语句,语法与 GRANT 类似,把 TO 换成 FROM

-- 撤销系统权限
REVOKE CREATE TABLE FROM test_user;
-- 撤销对象权限
REVOKE UPDATE ON scott.emp FROM test_user;
-- 撤销角色
REVOKE RESOURCE FROM test_user;

⚠️ 撤销权限的级联警告:

  • 撤销系统权限(带有 ADMIN OPTION)时,不会级联撤销该用户之前发给别人的同名权限。
  • 撤销对象权限(带有 GRANT OPTION)时,会级联撤销该用户之前发给别人的同名权限。