sql - 授予对所有表/PostgreSQL 的自动选择

标签 sql postgresql postgresql-9.2

我有一个生产数据库,用户可以在其中创建一组继承主表 X 的表。问题是当我想为所有表应用自动授予时;

当然使用此命令:GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only;这只会应用于已经创建的表。

目标是将命令应用于所有最新的表。

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 语句上触发。

关于sql - 授予对所有表/PostgreSQL 的自动选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30238330/

相关文章:

postgresql - 如何在一行中向 PostgreSQL 上创建的用户授予所有权限

sql - 如果值存在于多个类别中,如何分隔分组

postgresql - 我怎样才能使除停用词之外的所有内容都被索引

c++ - 如何使用 MySQL 将 c++ for 循环代码加速到查询中

mySQL语法错误,但是没有报错?

mysql - SQL:如何将多行添加在一起以生成新行?

sql - 从 Postgres 中的字符串列中删除 base64 值

sql - ActiveRecord 在同一 bool 值的变体上返回不同的结果

database - Postgres 是否支持 jsonb 列类型中的 Ilike 语句?

SQL:查找包含意外单词的字符串