【问题标题】:Change owner of Postgres table automatically?自动更改 Postgres 表的所有者?
【发布时间】:2017-03-15 20:54:27
【问题描述】:

我有一个由许多用户共享的数据库,所有用户都在一个组“example”中,并且数据库中的绝大多数对象都归“example”所有。用户偶尔会创建一个新表 - 该表被分配给创建它的用户,因此其他用户无法更改新表。

有没有办法让表的所有权自动设置为“示例”组,而不是创建表的用户,或者设置在@之后发生的触发器 987654322@一种设置组/权限的方法,这样所有用户都将被视为对象的所有者,而不管它们的实际创建者是谁?

【问题讨论】:

标签: postgresql alter-table grant


【解决方案1】:

您可能想使用EVENT TRIGGER

这在 Pg 从 9.3 开始的所有版本中都是可行的,但根据您的版本可能需要不同的方法,因为事件触发器的结构已经显着改进。

在早期版本中,您可以查看当前用户拥有的项目的表目录。在较新的版本中,您可以使用pg_event_trigger_ddl_commands 来获取您需要的信息。你想在 ddl 结束时运行命令。

【讨论】:

    【解决方案2】:

    您可以通过这种方式更改默认权限:

    ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO PUBLIC;

    或授予写入权限:

    ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT,INSERT,UPDATE,DELETE ON TABLES TO PUBLIC;

    https://www.postgresql.org/docs/9.0/static/sql-alterdefaultprivileges.html

    【讨论】:

    • 我真正需要的是ALTER 权限 - 它们仅对表的所有者可用,当一个用户创建一个新表时,他们被分配为所有者而不是公共组。
    猜你喜欢
    • 2023-01-18
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 2016-07-20
    • 2017-09-08
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多