问题描述
给用户赋权了schema下将来对象的查询权限,但是查询一张新建的表,报没权限
告警信息
无
处理过程
1、经确认,给用户赋权将来对象查询权限的语句如下:
ALTER DEFAULT PRIVILEGES IN SCHEMA xxx GRANT select ON TABLES TO xxx;
2、对schema的owner做了确认,owner和schema不是同名的
3、在涉及到schema和owner不同名的情况时,赋权将来的对象查询权限需要增加for user,具体如下:
ALTER DEFAULT PRIVILEGES for user xxx IN SCHEMA xxx GRANT select ON TABLES TO xxx;
4、执行以上赋权语句后,新建表,用户查询正常
另附查询schema对应的owner语句:
select a.nspname,b.usename from pg_namespace a,pg_user b where a.nspowner=b.usesysid and a.nspname=’schemaname’;
根因
schema的名字和owner不是同名,赋权将来对象的时候需要添加for user即可
解决方案
对于schema名字和owner不是同名的情况,给用户赋权将来对象查询权限执行如下sql:
ALTER DEFAULT PRIVILEGES for user xxx IN SCHEMA xxx GRANT select ON TABLES TO xxx;
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/316331.html