小编Mar*_*tin的帖子

我如何为所有模式中的所有表授予权限

我想要

GRANT SELECT
    ON ALL TABLES
    TO foo;
Run Code Online (Sandbox Code Playgroud)

但是 postgres 告诉我“TO”有一个语法错误。它期望像这样的 GRANT:

GRANT SELECT
    ON ALL TABLES
    IN SCHEMA public
    TO foo;
Run Code Online (Sandbox Code Playgroud)

我们已经碎片化,使得表了一把publicshard123shard124一切有一个表my_table,并public.my_table为双方的父母shard123.my_tableshard124.my_table。对于公共模式,我已将 SELECT 授予 foo,但 foo 没有任何分片模式的权限。

我也做过:

ALTER DEFAULT PRIVILEGES
    FOR ROLE dba
    GRANT SELECT
    ON TABLES
    TO foo;
Run Code Online (Sandbox Code Playgroud)

...它应该自动授予从现在开始创建的任何新表和模式。

有 1000 < n < 10000 个分片/模式,因此为每个分片/模式单独授予是不切实际的。

如何为所有现有模式(所有分片)中的所有现有表授予角色?

或者更好的是,我可以为所有模式 GRANTLIKE 'shard%'吗?

permissions postgresql-9.2

5
推荐指数
1
解决办法
5343
查看次数

标签 统计

permissions ×1

postgresql-9.2 ×1