问题描述
我在 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 (将#修改为@)