我正在构建一个 Spring Boot 应用程序。 Flyway 数据库迁移在应用程序启动时执行。
我决定使用两个不同的角色:角色__app (读/写表的权限、序列的权限app模式)和角色__迁移 (advanced的权利app/移民模式)。
Flyway迁移是在下面执行的角色__迁移所以它成为所创建对象的所有者。我认为以下陈述会有所帮助:
ALTER DEFAULT PRIVILEGES IN SCHEMA app GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO role__app;
ALTER DEFAULT PRIVILEGES IN SCHEMA app GRANT USAGE ON SEQUENCES TO role__app;
但是当新表添加到app架构用户__app(属于角色__app) 无权访问表。
是否可以通过 Postgres 或任何其他方式维护这样的流程(使用应用程序、迁移用户/角色)?
作为旁注,我应该提到我在目标数据库上运行以下语句:
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON DATABASE myDb FROM PUBLIC;
Update 1
我添加了FOR ROLE
子句,但我仍然收到创建的表的权限被拒绝的消息(应用程序属性) 在用户的应用程序架构中用户__app。该表的所有者是用户__mig.
Update 2
在 dbeaver 中以 postgres 用户身份登录后我们可以看到用户__mig已勾选所有必要的权限,而用户__app没有权限应用程序属性表全部:
这是重现该问题的要点:https://gist.github.com/happygrizzly/849a6a791f028ba5b191f73180ae35d1 https://gist.github.com/happygrizzly/849a6a791f028ba5b191f73180ae35d1