Installing and configuring PostgreSQL on macOS (OSX)

There are many guides around for installing and running postgres on macOS/OSX, a lot of them are old and almost all of them do something drastically differently. This is my process for installing and managing a postgres install which follows as closely to the official postgres docs as I can. My hopes is that this provides a clean and simple installation.

Installing PostgreSQL

I have one requirement aside from the ones mentioned above, and that is the use of homebrew. If you've not used homebrew before, it's a very simple command line package manager for macOS/OSX. Homebrew installations are provided by the official Postgres project so I feel this fits nicely.

  1. Ensure homebrew is installed and up-to-date:
$ brew doctor
$ brew update
  1. Install the postgresql package.
$ brew install postgresql

Start Postgres

Again, for this I'll be using homebrew because it simplifies things for us rather than managing systemctl or something similar. Daemon managers are all great tools, but I'm aiming for simplicity here.

  1. Startup the postgres service with homebrew
$ brew services start postgresql

Setting up Postgres

Some people will tell you to use createdb, this is generally a good way to create a new database but the postgres docs state

The first database is always created by the initdb command when the data storage area is initialized.

So we'll go ahead and use the initdb tool.

  1. Run initdb - I'm going to point the data directory (where postgres stores all our data) to /usr/local/var/postgres, I'm also going to set the encoding to utf8. These are sane settings for my use (local web app development) but your usage may require some different settings. Use initdb --help to see the options.
$ initdb /usr/local/var/postgres -E utf8

initdb creates a default database called postgres. It actually also creates another called template1 but that's a system database you shouldn't touch (unless you know what you're doing).

Connecting to our new database

We now have postgres installed and running with a default database initialised. We can connect to our database using the psql client, this is just a simple terminal postgres terminal client. We can connect to the our default database with:

$ psql -h localhost -d postgres

This will open a connection to our default database where we can start cracking out some SQL to our hearts content.

If you'd rather use another client, I'm a fan of DataGrip, your credentials will be as follows.

host: localhost
port: 5432
database: postgres

The username and password will be empty.


You might like An Introduction to the Container Ecosystem