微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决对新创建的架构的只读用户权限

我在 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 举报,一经查实,本站将立刻删除。