背景需求:
授权用户可以访问produser模式下新添加的表。
pgcmdb的owner是produser,并且有同名的produser模式,未授权前,testuser无法查看produser.app表,如下图

GRANT usage ON SCHEMA produser TO testuser;
GRANT SELECT ON ALL tables IN SCHEMA produser TO testuser;

经过授权可以查看produser.app表了,但是produser新建的表还是无法查看

需要执行 ALTER DEFAULT privileges IN SCHEMA produser GRANT SELECT ON tables TO testuser;
在这个地方由于我的不小心,插曲出现了,我选择了用postgres超级用户来执行这个赋权语句

发现还是没有权限读取produser新建的表。经过验证测试,发现 想让testuser有权限读取produser新建的表,就必须以produser来执行ALTER DEFAULT privileges IN SCHEMA produser GRANT SELECT ON tables TO testuser;
当前我们是以postgres用户执行赋权的,因此 postgres用户在prouser模式下的建的表,testuser是有权限读取的。

当我们以produser再次执行ALTER DEFAULT privileges IN SCHEMA produser GRANT SELECT ON tables TO testuser; 后,testuser也可以查看produser新建的表了。

个人理解 ALTER DEFAULT privileges 类似于oracle的profile概要文件,根据当前登陆的用户是谁,alter default针对的是当前用户的default设置。




