How to change the default unix socket location from /tmp for PostgreSQL

14 Nov 2015

The sort answer is: don't do it. But, many distros do, so if you are trying to mimick a distro build, you may have to.

If custom compiling, you can tell all the binaries by editing DEFAULT_PGSOCKET_DIR in src/include/pg_config_manual.h, so that all the binaries you compile will get this setting.

To change just the server setting at run time, edit postgresql.conf like so:

unix_socket_directory = '/var/run/postgresql'

Also, you will need to be sure /var/run/postgresql actually exists between reboots.

In systemd, that would go something like this:

Open /etc/systemd/system/postgresql.service in your favorite text editor and add this stanza:

# create /var/run/postgresql, which disappears between reboots
RuntimeDirectory=postgresql