【问题标题】:Altering view/access permissions for a schema in DB2在 DB2 中更改模式的查看/访问权限
【发布时间】:2016-11-16 02:12:41
【问题描述】:

我正在解决 IBM DB2 中“功能”的变通方法。

这个奇特的数据库有一个“特性”,如果我尝试使用CREATE TABLE 语句并且它没有找到架构,它会为我创建这个架构,即使我不希望它.这个错误导致我在调试中花费了很多时间,因为我的代码现在存在,并期望它不会如果它不存在则创建模式

我的问题是——如何更改特定用户无权查看的特定架构(甚至在创建架构阶段)的权限?

我查看了这个doc..

好像GRANT,有以下三个权限:

阿尔特林 授予更改或评论所有对象的权限 架构。自动显式创建的模式的所有者 获得 ALTERIN 特权。

创造 授予创建权限 架构中的对象。所需的其他权限或特权 创建对象(如 CREATETAB)仍然是必需的。的所有者 显式创建的模式会自动接收 CREATEIN 特权。隐式创建的架构具有 CREATEIN 权限 自动授予 PUBLIC。

下降 授予放弃的特权 架构中的所有对象。显式创建的模式的所有者 自动获得 DROPIN 权限

只有 ALTERIN、CREATEIN 和 DROPIN,我看不到任何与查看访问权限相关的内容:/

编辑:

我使用以下 SQL 检查了我们的 Dash DB 数据库中的这个特定表,该表对特定用户具有这些特殊权限:

SELECT * FROM SYSIBMADM.PRIVILEGES WHERE OBJECTSCHEMA = 'FAKE_SCRATCH';

这是结果:

编辑 2:

我尝试了以下方法来模拟该用户对该架构的 Dash DB 权限:

GRANT ALTERIN, CREATEIN, DROPIN ON SCHEMA FAKE_SCRATCH TO USER TEST_USER;

还是不行:/

【问题讨论】:

  • 这只是为你的数据库正确设置权限的问题 -- IMPLICIT_SCHEMA -- 但你会抱怨它太严格了。
  • @mustaccio 感谢您提供此链接!所以我猜这些RESTRICTIVE 权限只能在模式创建阶段完成?
  • 不行,创建数据库时只能指定RESTRICTIVE。在现有数据库中,您应该从 PUBLIC 撤消 IMPLICIT_SCHEMA(并且不要让您的应用程序以具有 DBADM 权限的用户身份连接)。
  • @mustaccio 再次感谢您的帮助。我查看了您分享的文章甚至随附的链接,但我真的看不出它在哪里向我们展示了如何从PUBLIC 撤消IMPLICIT_SCHEMA?另外,我如何不让应用程序以具有 DBADM 权限的用户身份连接?如果您可以将其写为答案,我会立即将您标记为答案!
  • 您使用REVOKE 语句撤销了权限,并且通过不提供您想要保护的授权ID 的密码来不允许应用程序连接。

标签: db2 sql-grant database-permissions


【解决方案1】:

在 DB2 中执行的以下 SQL 查询修复了该问题:

REVOKE IMPLICIT_SCHEMA ON DATABASE FROM PUBLIC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 2021-12-26
    • 2014-08-13
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    相关资源
    最近更新 更多