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.
- Ensure homebrew is installed and up-to-date:
$ brew doctor
$ brew update
- 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.
- 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.
- 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 toutf8
. These are sane settings for my use (local web app development) but your usage may require some different settings. Useinitdb --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