将自动 select 授予所有表/PostgreSQL

Grant an automatic select to a all tables / PostgreSQL

我有一个生产数据库,用户可以在其中创建一组继承主 table X 的 table。 tables;

自然地使用此命令:GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only ; 这将仅应用于已创建的 tables。

目的是为所有最新的 table 应用命令。

NB : I already tried to make a trigger on tables pg_class, pg_namespace but it's impossible and it's the same for the pg_tables view;

您可以使用 ALTER DEFAULT PRIVILEGES 命令为新创建的对象设置默认授权,例如:

ALTER DEFAULT PRIVILEGES
FOR USER creator_role IN SCHEMA public
GRANT SELECT ON TABLES TO read_only;

顺便说一句,虽然你不能在系统目录上安装触发器,但你可以使用 event triggers 实现同样的事情(在 Postgres 9.3+ 中),它在任何 CREATE/ DROP/ALTER 语句。