PostgreSQL on macOS
Installing PostgreSQL on macOS
Install MacPorts: See InstallingMacPorts, then:
$ sudo port install postgresql17-server
For versions of PostgreSQL before 16, optionally, install the documentation (newer versions install the documentation by default):
$ sudo port install postgresql15-doc
See the notes that are listed after the installation and follow the instructions therein.
Thereafter the server can be started and stopped with:
$ sudo port load postgresql17-server
$ sudo port unload postgresql17-server
Upgrading
These instructions assume you are upgrading from PostgreSQL 16 to PostgreSQL 17.
- Install the documentation as described above and see - /opt/local/share/doc/postgresql17/html/upgrading.html- $ open /opt/local/share/doc/postgresql17/html/upgrading.html
- Install the new version of PostgreSQL using MacPorts as shown in the notes after installing the server port. - $ sudo port select postgresql postgresql17 $ sudo mkdir -p /opt/local/var/db/postgresql17/defaultdb $ sudo chown postgres:postgres /opt/local/var/db/postgresql17/defaultdb
- Create the database instance: - $ sudo -u postgres /bin/sh -c 'cd /opt/local/var/db/postgresql17 && \ /opt/local/lib/postgresql17/bin/initdb -D \ /opt/local/var/db/postgresql17/defaultdb' $ sudo port load postgresql17-server
- Leave the old database version running and create a dump of the existing database, using the new version of - pg_dumpall- $ port select --list postgresql $ port select --show postgresql
- Create a database backup using the newer - pg_dumpall:- $ /opt/local/lib/postgresql17/bin/pg_dumpall >backup.dmp
- Stop the existing database server: - $ sudo port unload postgresql16-server
- Update the new configuration file: - $ sudo diff -u /opt/local/var/db/postgresql16/defaultdb/pg_hba.conf \ /opt/local/var/db/postgresql17/defaultdb/pg_hba.conf $ sudoedit /opt/local/var/db/postgresql17/defaultdb/pg_hba.conf
- Use the - port selectcommand to switch to the newly installed PostgreSQL binaries- $ sudo port select --set postgresql postgresql17
- Optionally, if using PostGIS, upgrade that - postgistoo:- $ port search -n 'pg*-postgis3' $ sudo port install pg17-postgis3
- Start the new version of the server: - $ sudo port load postgresql17-server
- As the Unix PostgreSQL user, create the superuser role in the new database: - $ cd / $ sudo -u postgres createuser -drs $USER_NAME $ cd - $ psql -l
- Restore the database from the dump created earlier: - $ psql -d postgres -f dump.sql
Trouble-shooting
Check the PostgreSQL log:
$ tail -n 20 /opt/local/var/log/postgresql17/postgres.log
-- Frank Dean - 14 May 2025
-- Frank Dean - 26 Jun 2018
Related Topics: PostgreSQL, InstallingMacPorts, MacOSXTips