我有一种情况,许多用户可以跨所有可用模式创建数据库对象。
所有开发人员都使用一个通用用户 pg_dump_user 在需要时将整个数据库转储到他们的本地数据库。所以这个用户应该拥有对所有数据库对象的读取权限。
为了实现这一点,我尝试在架构级别和用户级别设置默认权限。
--为每个模式设置的默认权限
ALTER DEFAULT PRIVILEGES IN SCHEMA xyz GRANT SELECT ON TABLES to ro_user';
Run Code Online (Sandbox Code Playgroud)
--为每个用户设置的默认权限
ALTER DEFAULT PRIVILEGES FOR ROLE abc_user GRANT SELECT ON TABLES to ro_user' ;
Run Code Online (Sandbox Code Playgroud)
即使上面的设置存在,在某些时间之后这些都会消失,因为 ro_user 无法访问创建的新对象。
任何关于此的指针都会有所帮助,我的目标只是为用户实现对当前和未来所有对象的选择访问,以便执行 pg_dump。