授予创建任何触发器与授予创建触发器

2023-12-24

在 Oracle 中,您可以授予系统权限,例如

GRANT CREATE TRIGGER TO MY_USER;

但您也可以通过这种方式授予权限

GRANT CREATE ANY TRIGGER TO MY_USER;

由于系统权限是系统范围的,因此上面两条语句之间的区别在哪里。是否需要额外ANY-关键字除了系统之外还授予其他任何东西吗?如果我添加一个Grant ... ON SCHEMA ...它不再是系统权限了,是吗?

假设数据库中有来自不同用户的多个模式/对象,如果没有这些权限,就无法访​​问。

EDIT:

SELECT *
FROM DBA_SYS_PRIVS
WHERE grantee = 'MY_USER';

returns

GRANTEE      PRIVILEGE                              
------------ -------------
MY_USER      CREATE ANY TRIGGER
MY_USER      CREATE TRIGGER

(我省略了列ADMIN_OPTION and COMMON)

使用 MY_USER、MY_USER2 或任何其他用户查询时,结果是相同的。我在这里看不到与模式的联系。并且也可以只具有CREATE ANY TRIGGER-特权。


在大多数情况下,触发器所有者也是触发器所基于的表(或视图)的所有者。在这些情况下,表所有者可以使用 CREATE TRIGGER 在自己的表上创建触发器。

CREATE ANY TRIGGER 允许用户在任何表上创建任何用户拥有的触发器。这是一个很大的安全漏洞,因为他们可以在他们拥有或可以插入的表上创建特权用户拥有的触发器。因为他们可以插入到该表中,所以他们可以强制执行触发器,并且触发器以触发器所有者的权限执行。其效果是,具有 CREATE ANY TRIGGER 权限的用户可以作为特权用户创建和执行代码(类似于具有 CREATE ANY PROCEDURE 和 EXECUTE ANY PROCEDURE)。

限制尽可能少的人员并进行适当的审核。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

授予创建任何触发器与授予创建触发器 的相关文章

  • postgresql 中的咨询锁超时

    我正在从 ORACLE 迁移 目前我正在尝试移植此呼叫 lkstat DBMS LOCK REQUEST lkhndl DBMS LOCK X MODE lktimeout true 这个功能 http docs oracle com cd
  • 为什么这个触发器会失败?它说无效标识符

    CREATE MATERIALIZED VIEW ORDERS MV BUILD IMMEDIATE REFRESH COMPLETE ON DEMAND AS SELECT FROM ORDERS CREATE OR REPLACE TR
  • 检查行中是否有单调递增的值

    我正在寻找一种方法来检查表中的值是否针对特定的行子集单调递增 该表包含列 id name meas date 和 value 对于具有相同名称的所有行 应按 meas date 对行进行排序 并且需要检查这些排序行的值列是否单调递增 因此
  • 计算Oracle中逗号分隔字符串中的元素数量

    假设我有一张桌子Col2是 varchar Col1 Col2 1 001 002 2 003 004 005 我需要计算 Col2 中的元素数量 并返回它 如果我这样做的话 select do something here with co
  • java.sql.SQLException: - ORA-01000: 超出最大打开游标数

    我收到 ORA 01000 SQL 异常 所以我有一些与之相关的疑问 最大打开游标是否与 JDBC 连接数完全相关 或者它们也与我们为单个连接创建的语句和结果集对象相关吗 我们正在使用连接池 有没有办法配置数据库中语句 结果集对象的数量 如
  • 通过 OCI 调用 Oracle 存储过程并使用 C++ 中的 out ref 游标返回结果

    我想使用 OCI 接口从 C 调用 Oracle 存储过程 并使用 out SYS REF CURSOR 作为过程的参数来迭代结果 我是 OCI 新手 所以可能会遗漏一些简单的东西 大部分代码取自这里 我的存储过程是 CREATE OR R
  • Oracle SQL 从零件创建日期

    我在数据库中有两个日期字段 名为 EFFECTIVE DATE 和 POINT DATE 如何创建新的日期字段 其中日期由 EFFECTIVE DATE 年份 POINT DATE 月份和 POINT DATE 日期组成 我通常会使用 Da
  • 如何使用 oracle SQL 执行线性插值?

    我正在尝试使用 Oracle 11g 开发中为 11 1 生产中为 11 2 进行数值分析 特别是对具有三列感兴趣的表进行线性插值 时间戳 deviceid 和值 值列保存来自设备 具有 ID deviceid 的数据 这些数据是在时间戳中
  • Oracle SQL - 如何使用 RANK() 或 DENSE_RANK() 和 ROW_NUMBER() 分析函数获取不同的行?

    我希望获得每个部门前 3 名不同的薪资 我能够使用RANK or DENSE RANK or ROW NUMBER 但我的表有一些工资相同的记录 下面提到的是我的查询及其结果 20部薪资前三名应该是6000 3000 2975 但是有 2
  • 如何找到 Oracle 视图的基础列和表名称?

    这听起来应该很简单 但事实并非如此 我找不到任何 Oracle 元数据 视图可以提供 Oracle 视图列的基础列和表名称 我发现这样做的唯一方法是解析视图源 SQL 这与精确的科学相去甚远 为了解释我想要什么 请考虑我在 SCOTT 模式
  • 在 PL/SQL 块中定义引用其自身集合的记录类型

    如何在 PL SQL 匿名块中定义包含自身集合属性的记录类型 看下面的例子 DECLARE type t item is record name varchar2 64 children t items referencing t item
  • PL/SQL 过程成功完成但没有显示任何内容

    我有以下过程代码 create or replace PROCEDURE Ventas cliente p DNI IN CHAR IS CURSOR c pedidos clientes IS SELECT FROM Pedidos ve
  • 如何记录更改列 DDL 操作

    我需要创建一个数据库触发器来记录每个更改 Add Column Modify Column Drop Column 使用Oracle的模式触发器在特定表中执行语句 如何获得 到目前为止我尝试了下面的代码 TRIGGER after ddl
  • 使用 SQL 序数位置表示法的好处?

    背景资料 序数位置表示法 又称序数 是基于列列表中的列顺序的列简写 SELECT子句 而不是列名或列别名 通常支持在ORDER BY子句 某些数据库 MySQL 3 23 PostgreSQL 8 0 支持语法GROUP BY条款也是如此
  • 授予用户在查询时使用表索引的什么?

    我想知道当用户从表中查询数据并且该用户已被授予以下权限时 oracle 是否使用索引 grant select on table to user 我想知道是否需要其他拨款才能使用索引 不 没有要求 或能力 授予对索引的访问权限 如果用户可以
  • 如何授予所有表的 REFERENCES 权限

    我必须授予REFERENCES登录权限说sql login 我可以给予资助REFERENCES对单个表的权限 例如 GRANT REFERENCES ON Mytable TO sql login 有什么办法可以授予REFERENCES允许
  • Pivotal Cloud Foundry - 连接到外部 Oracle 数据库

    我正在创建一个 Spring boot 应用程序 该应用程序连接到一个不由 PCF 管理 或驻留在外部 的 Oracle 数据库 在我的本地开发环境中 我在 application properties 文件中配置了数据库连接详细信息 有人
  • Oracle TDE 能否保护数据免受 DBA 的侵害?

    甲骨文专家 我的客户想要部署一个必须在数据库中保存信用卡号的应用程序 客户显然很关心安全性 我们特别关注一个令人痛苦的问题 我们如何确保只有具有 业务需要知道 的授权用户才可以访问数据 我们如何保护数据免受 DBA 的侵害 一个明显的解决方
  • ORA-12154: TNS: 无法解析指定的连接标识符 (PLSQL Developer)

    我需要使用 PLSQL Developer 访问 oracle 数据库 当我尝试连接到数据库时出现以下错误 ORA 12154 TNS could not resolve the connect identifier specified 我
  • 在 Oracle 行的多个列上使用透视

    我在 Oracle 表中有以下示例数据 tab1 我正在尝试将行转换为列 我知道如何在某一列上使用 Oracle 数据透视表 但是否可以将其应用于多个列 样本数据 Type weight height A 50 10 A 60 12 B 4

随机推荐