【问题标题】:Liquibase default role when creating objects in Postgres database在 Postgres 数据库中创建对象时的 Liquibase 默认角色
【发布时间】:2019-08-29 14:08:48
【问题描述】:
在我的应用程序中,Liquibase 使用一个特殊用户 liquibase 来连接到数据库并应用所有更改集。因此,所有创建的表、序列、函数等都将用户 liquibase 作为所有者。 liquibase 用户是角色 db_ddl_admin 的成员,我希望该角色成为所有已创建对象的所有者。我可以通过在每个更改集的开头添加语句SET ROLE TO db_ddl_admin 来实现这一点,但我不喜欢这种方法。在 Liquibase 中是否有集中设置此类设置的方法?
【问题讨论】:
标签:
postgresql
liquibase
roles
【解决方案1】:
Liquibase 对所有变更集使用单一连接。所以在 changeLog 的开头运行一次SET ROLE 语句就足够了:
<databaseChangeLog ...>
<changeSet runAlways="true" author="setup" id="init-role" dbms="postgresql">
<sql>SET ROLE TO db_ddl_admin</sql>
</changeSet>
... your changeSets go here ...
</databaseChangeLog>