How to provide a password for PostgreSQL's createdb non-interactively?

karolsojko picture karolsojko · Nov 12, 2012 · Viewed 8.8k times · Source

I have a task in phing where before tests I drop the database if exists and create it. This is run on Jenkins. I want to do it with createdb like this:

<exec command="createdb my_database" />

The thing is that the createdb is asking me to authenticate and adding -Umy_user parameter is not a problem - the issue is that I cannot specify a password in the createdb command. And I don't want to create a role for the system user ("jenkins" in this case). Is there a solution for that ?

Answer

Daniel V&#233;rit&#233; picture Daniel Vérité · Nov 13, 2012

createdb will use the PGPASSWORD environment variable if it's set, that's one simple way of providing a password in non-interactive runs.

Another option would be to set up a .pgpass file in the home directory of the unix user launching the createdb.