我想要
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)
我们已经碎片化,使得表了一把public,shard123和shard124一切有一个表my_table,并public.my_table为双方的父母shard123.my_table和shard124.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%'吗?