对新创建的架构的只读用户权限

问题描述

我在 Postgres(版本 12.7)中使用角色和权限,我想要的是在我的数据库中拥有一个只读角色。

我设法更改了模式的认权限,以授予对所有表和序列的选择权限,但仅限于现有模式,但是当我创建新模式时,我必须再次授予对该模式的使用权。

是否有可能,认情况下,当我创建新架构时,只读用户可以访问该架构,而无需指定只读用户可以查看该架构?

这是我的小脚本,它在所有现有模式上授予使用权并在每个表和序列上进行选择:

DO
$body$
DECLARE
r record;

q varchar;
BEGIN

for r in select nspname from pg_catalog.pg_namespace loop
    q = 'grant usage on schema ' || r.nspname || ' to read_only_role;';
    raise info 'Executing %',q;
    execute q;
    
    
    q = 'GRANT select ON ALL TABLES IN SCHEMA ' || r.nspname || ' TO read_only_role;';
    raise info 'Executing %',q;
    execute q;
    
            
    q = 'revoke create on schema ' || r.nspname || ' from read_only_role;';
    raise info 'Executing %',q;
    execute q;
    
    q = 'grant select on all sequences in schema ' || r.nspname || ' to read_only_role;';
    raise info 'Executing %',q;
    execute q;
    
    
    q = 'alter default privileges in schema ' || r.nspname || ' grant select on tables TO read_only_role;';
    raise info 'Executing %',q;
    execute q;
    
    q = 'alter default privileges in schema ' || r.nspname || ' grant select on sequences TO read_only_role;';
    raise info 'Executing %',q;
    execute q;
end loop;


END;
$body$
LANGUAGE 'plpgsql'; 

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)