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

推荐订阅源

aimingoo的专栏
aimingoo的专栏
S
Securelist
博客园 - Franky
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
IT之家
IT之家
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
The Cloudflare Blog
云风的 BLOG
云风的 BLOG
N
News and Events Feed by Topic
AI
AI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Schneier on Security
Schneier on Security
Attack and Defense Labs
Attack and Defense Labs
Vercel News
Vercel News
腾讯CDC
Google DeepMind News
Google DeepMind News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
M
MIT News - Artificial intelligence
WordPress大学
WordPress大学
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
N
Netflix TechBlog - Medium
量子位
S
Schneier on Security
Hacker News: Ask HN
Hacker News: Ask HN
Cyberwarzone
Cyberwarzone
S
Security Affairs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
N
News and Events Feed by Topic
T
Tenable Blog
PCI Perspectives
PCI Perspectives
MyScale Blog
MyScale Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cyber Attacks, Cyber Crime and Cyber Security
W
WeLiveSecurity
N
News | PayPal Newsroom
P
Proofpoint News Feed
O
OpenAI News
C
CERT Recently Published Vulnerability Notes
B
Blog
Cisco Talos Blog
Cisco Talos Blog
Microsoft Security Blog
Microsoft Security Blog
V
Visual Studio Blog
MongoDB | Blog
MongoDB | Blog
大猫的无限游戏
大猫的无限游戏
A
Arctic Wolf
Y
Y Combinator Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Spread Privacy
Spread Privacy

博客园 - dirgo

Oracle关联表删除数据和更新数据 logback-spring.xml引入了base.xml日志文件默认生成在哪里? application.yml中Logback相关配置 org/springframework/boot/logging/logback/defaults.xml的内容和作用 logback-spring.xml 中<include resource="org/springframework/boot/logging/logback/base.xml"/>作用 Spring Boot 项目 Logback 日志框架配置文件logback-spring.xml详解 Oracle DataBaseLink 提示密码过期 梅特勒托-托利多衡器串口连续输出数据格式的说明 utf-8编码详解 mybaits updateWrapper更新报错:无效的列类型: 1111 @RequestPart和@RequestParam有什么区别 如何避免Mass Assignment漏洞? 关于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&quot;字(Word)&quot;类型,最直接和正确的做法是使用其内置的 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)时,会级联撤销该用户之前发给别人的同名权限。