Postgres on Lion
I’ve recently been picking up PostgreSQL. It’s very nice. Unfortunately, I had a few issues with it and Lion. Lion Server now uses Postgres as its default database (replacing MySQL), and consequently it looks like Apple included a bunch of tools in standard Lion, too.
Unfortunately, these clash a if you attempt to install and use the database daemon.
Install & Configure
To start with, install Postgres from Homebrew:
brew install postgres
Then (as told) initialise the database:
initdb /usr/local/var/postgres
But ignore the rest (as in, don’t add the LaunchAgent).
Next, it is necessary to adjust your $PATH
slightly. On OS X, this is stored in /etc/paths
. You need to push /usr/local/bin
to be searched before /usr/bin
. This will ensure that the homebrew compiled binaries are used instead of the system ones.
Control
The LaunchAgent step that was skipped is so that you can control Postgres yourself. If this is setup, it will interfere with the pg_ctl
command. Usually, the LaunchAgent would be used to manage it all for you.
Starting/Stopping Postgres
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
pg_ctl -D /usr/local/var/postgres stop -s -m fast
These commands will start and stop Postgres, respectively. The -m fast
flag on the stop command ignores the presence of other clients as it goes down.
Aliases
As these are a little long, I have these aliased to pgstart
and pgstop
. Done like this:
export PGDATA='/usr/local/var/postgres'
alias pgstart='pg_ctl -l $PGDATA/server.log start'
alias pgstop='pg_ctl stop -m fast'
So, there you go. That’s how to setup Postgres properly on Lion. My next challenge is to make libpq (the C library for Postgres) up and running.