在其他模式 table 上 GRANT SELECT

GRANT SELECT on other schema table

我们的应用程序的数据结构跨两个模式,我们称它们为 Main 和 Archive。这是必需的,因为主模式中的一些 table 被归档到存档模式中的相应 table 中。

主要模式更新是 运行 使用 Liquibase servlet,当应用程序首次启动时,主要用户 运行 使用 Liquibase servlet。

目前,所有存档更新都是 运行 作为单独的 DBA 任务。这有点不方便,因为我们必须聘请 DBA 来处理一些简单的事情,比如在存档模式中创建一个新的 table 并向作为所有应用程序数据的绝对所有者的主用户授予正确的权限。

我们正在考虑让主要用户能够 create/alter 存档模式中的对象并将其嵌入到我们的 Liquibase 脚本中。

主要用户已被授予 APP_ADMIN_ROLE,使其有权创建、更改、评论等任何 TABLE,因此它能够创建和删除 table存档架构。

但是,我们遇到了一个问题,尽管主要用户可以创建一个存档 table,但它无法将 table 上的 CRUD 操作授予自己。

有什么办法可以实现吗

GRANT DBA TO MAIN 不是一个选项。

提前致谢

为了将来参考(并摘自 kfinity 的评论),以下解决方案最好地回答了 OP 问题:

A lazy fix: you can also grant CRUD operations for ANY TABLE. In your case, you could either grant it to the Main user or the role. e.g.

grant select any table, update any table, delete any table, insert any table to APP_ADMIN_ROLE;