我有2个用户。 User1是写作者,并且是角色编写的成员,而User2是角色“读者”的成员。
读取者角色具有后续权限:
GRANT CONNECT ON DATABASE to reader
GRANT USAGE ON SCHEMA x TO reader
我希望读者能够从给定架构中读取/选择所有新表,但是当我使用后续字符串时,即使每个消息源都在说这是可行的方法,它对我也不起作用:
ALTER DEFAULT PRIVILEGES IN SCHEMA x GRANT SELECT ON TABLES TO reader;
但是通过使用该行,User2将不会获得对由User1 / writer角色创建的新表的任何许可。
使用:
ALTER DEFAULT PRIVILEGES FOR ROLE writer IN SCHEMA x GRANT SELECT ON TABLES TO reader;
也不起作用。我必须明确命名该表的所有者。要使其正常工作,我必须使用:
ALTER DEFAULT PRIVILEGES FOR ROLE User1 IN SCHEMA x GRANT SELECT ON TABLES TO reader;
我实际上不想使用,因为除User1之外可能还有其他用户打算将表发布到该模式中。
我不明白。难道我做错了什么?我有什么想念的吗?似乎没有多少人遇到这个问题。您能否帮助我,并告诉我为什么标准的最佳做法字符串不起作用,为什么我必须直接命名所有者?