DEV Community

Cover image for 🐘 Simplified Guide to Setting Up PostgreSQL on macOS with Docker 🚢
kpndevroot
kpndevroot

Posted on

🐘 Simplified Guide to Setting Up PostgreSQL on macOS with Docker 🚢

Are you struggling with PostgreSQL configuration on macOS?

If you’ve been wrestling with environment variables like these:

DATABASE_URL=postgres://myuser@host.docker.internal:5432/mydb
#OR
DATABASE_URL=postgres://myuser:myuser@127.0.0.1:5432/mydb
Enter fullscreen mode Exit fullscreen mode

You’re not alone! PostgreSQL setup on macOS can feel daunting due to:

  • ❌ Limited client tools: Unlike Linux, macOS lacks straightforward commands like createuser --interactive -P.
  • 📖 Sparse documentation: Most PostgreSQL guides cater to Linux or Windows, leaving macOS users to figure it out on their own.

But don’t worry—we’ll walk through an easy and beginner-friendly way to set up PostgreSQL on macOS using Homebrew and Docker!🎉

🏆 Why This Guide Stands Out

  • ✅ Clear step-by-step instructions.
  • 🖥️ Tailored for macOS users.
  • 📊 Real-world examples with expected outputs for verification.

Let’s dive in! 🚀

🔧 Step 1: Install PostgreSQL Using Homebrew

1️⃣ Install PostgreSQL with Homebrew:

brew install postgresql@16
Enter fullscreen mode Exit fullscreen mode

2️⃣ Start the PostgreSQL service:

brew services start postgresql@16
Enter fullscreen mode Exit fullscreen mode

3️⃣ Verify the service status:

brew services info postgresql@16
Enter fullscreen mode Exit fullscreen mode

You should see output like this:

postgresql@16 (homebrew.mxcl.postgresql@16)
Running: ✔
Loaded: ✔
Schedulable: ✘
User: root
PID: 38646
Enter fullscreen mode Exit fullscreen mode

💡 Pro Tip
If you encounter issues, restart the service:

brew services restart postgresql@16
Enter fullscreen mode Exit fullscreen mode

🏗️ Step 2: Create a PostgreSQL User and Database

1️⃣ Access the PostgreSQL interactive shell:

psql postgres
Enter fullscreen mode Exit fullscreen mode

Example output:

❯ psql postgres
psql (14.13 (Homebrew), server 16.4 (Homebrew))
WARNING: psql major version 14, server major version 16.
         Some psql features might not work.
Type "help" for help.
Enter fullscreen mode Exit fullscreen mode

2️⃣ Create a User and Database

  1. Create a user
CREATE USER myuser WITH PASSWORD 'user';
Enter fullscreen mode Exit fullscreen mode

Expected Output:

CREATE ROLE
Enter fullscreen mode Exit fullscreen mode
  1. Create a database:
CREATE DATABASE mydb;
Enter fullscreen mode Exit fullscreen mode

Expected Output:

CREATE DATABASE
Enter fullscreen mode Exit fullscreen mode
  1. Grant access:
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
Enter fullscreen mode Exit fullscreen mode

Expected Output:

GRANT
Enter fullscreen mode Exit fullscreen mode

🔗 Step 3: Connect to Your Database

Now, let’s test the connection to ensure everything is working. Use the following command to connect:

psql -U myuser -d mydb -p 5432
Enter fullscreen mode Exit fullscreen mode

Expected Output:


❯ psql -U myuser -d mydb -p 5432

psql (14.13 (Homebrew), server 16.4 (Homebrew))
WARNING: psql major version 14, server major version 16.
         Some psql features might not work.
Type "help" for help.

mydb=>
Enter fullscreen mode Exit fullscreen mode

🛠️ Common Issues and Solutions

1️⃣ Connection Refused

  • Cause: Firewall or incorrect host.docker.internal.
  • Solution: Test with 127.0.0.1 or check your Docker network settings

2️⃣ Version Mismatch Warnings

  • Cause: Using an older psql client.
  • Solution: Update your client to match the server version.

🎯 What’s Next?

  • 🔍 Explore your database.
  • 🛠️ Start building applications.
  • ⚙️ Configure your DATABASE_URL with host.docker.internal for Docker-based projects.

Now you’re ready to handle PostgreSQL on macOS like a pro! 🚀

If you enjoyed this guide, don’t forget to share it with your fellow developers! 🧑‍💻👩‍💻

Drop a comment below if you have questions or tips to add. Let’s make PostgreSQL configuration seamless for everyone! 🌟

Sentry blog image

How to reduce TTFB

In the past few years in the web dev world, we’ve seen a significant push towards rendering our websites on the server. Doing so is better for SEO and performs better on low-powered devices, but one thing we had to sacrifice is TTFB.

In this article, we’ll see how we can identify what makes our TTFB high so we can fix it.

Read more

Top comments (0)

Cloudinary image

Optimize, customize, deliver, manage and analyze your images.

Remove background in all your web images at the same time, use outpainting to expand images with matching content, remove objects via open-set object detection and fill, recolor, crop, resize... Discover these and hundreds more ways to manage your web images and videos on a scale.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay