Postgresql 在Postgres数据库中创建对象时取消默认角色

Postgresql 在Postgres数据库中创建对象时取消默认角色,postgresql,liquibase,roles,Postgresql,Liquibase,Roles,在我的应用程序中,Liquibase使用一个特殊的用户,Liquibase,以便连接到数据库并应用所有更改集。因此,所有创建的表、序列、函数等都有用户liquibase作为所有者。liquibase用户是角色db_ddl_admin的成员,我希望该角色成为所有已创建对象的所有者。我可以通过在每个更改集的开头将语句SET角色添加到db_ddl_admin来实现这一点,但我不喜欢这种方法。在Liquibase中是否有一种集中设置的方法 Liquibase对所有变更集使用单个连接。因此,在change

在我的应用程序中,Liquibase使用一个特殊的用户,
Liquibase
,以便连接到数据库并应用所有更改集。因此,所有创建的表、序列、函数等都有用户
liquibase
作为所有者。
liquibase
用户是角色
db_ddl_admin
的成员,我希望该角色成为所有已创建对象的所有者。我可以通过在每个更改集的开头将语句
SET角色添加到db_ddl_admin
来实现这一点,但我不喜欢这种方法。在Liquibase中是否有一种集中设置的方法

Liquibase对所有变更集使用单个连接。因此,在changeLog的开头运行一次
setrole
语句就足够了:

<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>

将角色设置为db_ddl_admin
... 你的变更集在这里。。。