在创建Postgres数据库对象时,Liquibase的默认角色是什么?

3
我的应用程序使用特殊的用户liquibase连接数据库并应用所有更改集。因此,创建的所有表、序列、函数等都有用户liquibase作为所有者。 liquibase用户是角色db_ddl_admin的成员,我希望这个角色成为所有创建对象的所有者。我可以通过在每个变更集开头添加语句SET ROLE TO db_ddl_admin来实现这一点,但我不喜欢这种方法。是否有一种集中设置此类设置的方式?
最初的回答:我的应用程序中,Liquibase使用一个特殊的用户liquibase连接数据库并应用所有更改集。因此,所有创建的表、序列、函数等都有liquibase作为所有者。我希望将角色db_ddl_admin作为所有创建对象的所有者。我可以在每个更改集的开头添加SET ROLE TO db_ddl_admin语句来实现这一点,但我不想这样做。请问是否有一种集中设置此类设置的方法?
1个回答

8

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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接