Setup Google Cloud SQL Proxy on macOS

From almost two years now I have been working with Google Cloud Services on a daily basis. Debugging cloud run instances, app engine instances and checking on SQL database instances performance and open connections are some of the tasks I have been doing on Google Cloud Services.

One of the tools I use the most is the Cloud SQL Proxy, which lets me reach database instances running on GCloud through running a single command in my terminal. Cloud SQL Proxy basically opens a TCP connection in my machine which I can bind to and communicate to my database instance just like I’m running it locally its a very good experience in my opinion.

Before going any further it’s important that you have Xcode command-line tools installed. You can run xcode-select --install from your terminal to have it installed.

I’m going to install Google Cloud CLI using Homebrew. If you don’t know what Homebrew is then you must understand that Homebrew is a package manager for macOS, similar ⏤ but not the same ⏤ to the apt-get command if you have used Ubuntu before or Chocolatey if you have used it on Windows.

You can install Homebrew by opening your terminal and executing the following command:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Source

Installing Google Cloud SDK

With brew ⏤ the command used to execute Homebrew tasks ⏤ you can install the Google Cloud SDK binary by executing:

brew install cask google-cloud-sdk

The installation may take around 5 minutes to complete, you will see a lot of output from Homebrew while performing its tasks. When the installation is complete you will see output similar to this:

Welcome to the Google Cloud CLI!
Beginning update. This process may take several minutes.


Your current Cloud SDK version is: 371.0.0
Installing components from version: 371.0.0

┌─────────────────────────────────────────────────────────────────────────────┐
│                     These components will be installed.                     │
├─────────────────────────────────────────────────────┬────────────┬──────────┤
│                         Name                        │  Version   │   Size   │
├─────────────────────────────────────────────────────┼────────────┼──────────┤
│ BigQuery Command Line Tool                          │     2.0.73 │  1.0 MiB │
│ BigQuery Command Line Tool (Platform Specific)      │     2.0.73 │  < 1 MiB │
│ Cloud Storage Command Line Tool                     │        5.6 │  8.1 MiB │
│ Cloud Storage Command Line Tool (Platform Specific) │        5.6 │  < 1 MiB │
│ GoogleCloud CLI Core Libraries (Platform Specific)  │ 2022.01.28 │  < 1 MiB │
│ anthoscli                                           │     0.2.22 │ 46.5 MiB │
│ gcloud cli dependencies                             │ 2021.04.16 │  < 1 MiB │
└─────────────────────────────────────────────────────┴────────────┴──────────┘

For the latest full release notes, please visit:
  https://cloud.google.com/sdk/release_notes

This means that Google Cloud CLI is installed in your macOS computer with no issues!.

You will also notice that some other commands for Google Cloud SDK are installed by default:

╔════════════════════════════════════════════════════════════╗
╠═ Creating update staging area                             ═╣
╚════════════════════════════════════════════════════════════╝
╔════════════════════════════════════════════════════════════╗
╠═ Installing: BigQuery Command Line Tool                   ═╣
╚════════════════════════════════════════════════════════════╝
╔════════════════════════════════════════════════════════════╗
╠═ Installing: BigQuery Command Line Tool (Platform Spec... ═╣
╚════════════════════════════════════════════════════════════╝
╔════════════════════════════════════════════════════════════╗
╠═ Installing: Cloud Storage Command Line Tool              ═╣
╚════════════════════════════════════════════════════════════╝
╔════════════════════════════════════════════════════════════╗
╠═ Installing: Cloud Storage Command Line Tool (Platform... ═╣
╚════════════════════════════════════════════════════════════╝
╔════════════════════════════════════════════════════════════╗
╠═ Installing: Default set of gcloud commands               ═╣
╚════════════════════════════════════════════════════════════╝
╔════════════════════════════════════════════════════════════╗
╠═ Installing: GoogleCloud CLI Core Libraries (Platform ... ═╣
╚════════════════════════════════════════════════════════════╝
╔════════════════════════════════════════════════════════════╗
╠═ Installing: anthoscli                                    ═╣
╚════════════════════════════════════════════════════════════╝
╔════════════════════════════════════════════════════════════╗
╠═ Installing: anthoscli                                    ═╣
╚════════════════════════════════════════════════════════════╝
╔════════════════════════════════════════════════════════════╗
╠═ Installing: gcloud cli dependencies                      ═╣
╚════════════════════════════════════════════════════════════╝
╔════════════════════════════════════════════════════════════╗
╠═ Creating backup and activating new installation          ═╣
╚════════════════════════════════════════════════════════════╝

Homebrew will ask you to install shell completions, you can do it by running the commands printed on the terminal:

To install shell completions, add this to your profile:

  for bash users
    source "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.bash.inc"

  for zsh users
    source "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc"

Using the gcloud command

After installing google-cloud-sdk the gcloud command will be available. Make sure it is installed by execting gcloud --version in your terminal:

gcloud --version

Output:

Google Cloud SDK 371.0.0
bq 2.0.73
core 2022.01.28
gsutil 5.6

Let’s check which components are available, you can run:

gcloud components list

Output:

Your current Cloud SDK version is: 371.0.0
The latest available version is: 371.0.0

┌────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                 Components                                                 │
├───────────────┬──────────────────────────────────────────────────────┬──────────────────────────┬──────────┤
│     Status    │                         Name                         │            ID            │   Size   │
├───────────────┼──────────────────────────────────────────────────────┼──────────────────────────┼──────────┤
│ Not Installed │ App Engine Go Extensions                             │ app-engine-go            │  4.1 MiB │
│ Not Installed │ Appctl                                               │ appctl                   │ 18.5 MiB │
│ Not Installed │ Cloud Bigtable Command Line Tool                     │ cbt                      │  7.9 MiB │
│ Not Installed │ Cloud Bigtable Emulator                              │ bigtable                 │  5.9 MiB │
│ Not Installed │ Cloud Datalab Command Line Tool                      │ datalab                  │  < 1 MiB │
│ Not Installed │ Cloud Datastore Emulator                             │ cloud-datastore-emulator │ 18.4 MiB │
│ Not Installed │ Cloud Firestore Emulator                             │ cloud-firestore-emulator │ 40.5 MiB │
│ Not Installed │ Cloud Pub/Sub Emulator                               │ pubsub-emulator          │ 60.7 MiB │
│ Not Installed │ Cloud SQL Proxy                                      │ cloud_sql_proxy          │  7.6 MiB │
│ Not Installed │ Google Cloud Build Local Builder                     │ cloud-build-local        │  6.2 MiB │
│ Not Installed │ Google Container Registry's Docker credential helper │ docker-credential-gcr    │  2.2 MiB │
│ Not Installed │ Kustomize                                            │ kustomize                │  7.6 MiB │
│ Not Installed │ Minikube                                             │ minikube                 │ 26.8 MiB │
│ Not Installed │ Nomos CLI                                            │ nomos                    │ 23.6 MiB │
│ Not Installed │ On-Demand Scanning API extraction helper             │ local-extract            │ 13.0 MiB │
│ Not Installed │ Skaffold                                             │ skaffold                 │ 19.2 MiB │
│ Not Installed │ anthos-auth                                          │ anthos-auth              │ 18.0 MiB │
│ Not Installed │ config-connector                                     │ config-connector         │ 49.7 MiB │
│ Not Installed │ gcloud Alpha Commands                                │ alpha                    │  < 1 MiB │
│ Not Installed │ gcloud Beta Commands                                 │ beta                     │  < 1 MiB │
│ Not Installed │ gcloud app Java Extensions                           │ app-engine-java          │ 51.6 MiB │
│ Not Installed │ gcloud app PHP Extensions                            │ app-engine-php           │ 21.9 MiB │
│ Not Installed │ gcloud app Python Extensions                         │ app-engine-python        │  7.8 MiB │
│ Not Installed │ gcloud app Python Extensions (Extra Libraries)       │ app-engine-python-extras │ 26.4 MiB │
│ Not Installed │ kpt                                                  │ kpt                      │ 12.2 MiB │
│ Not Installed │ kubectl                                              │ kubectl                  │  < 1 MiB │
│ Not Installed │ kubectl-oidc                                         │ kubectl-oidc             │ 18.0 MiB │
│ Not Installed │ pkg                                                  │ pkg                      │          │
│ Installed     │ BigQuery Command Line Tool                           │ bq                       │  1.0 MiB │
│ Installed     │ Cloud Storage Command Line Tool                      │ gsutil                   │  8.1 MiB │
│ Installed     │ GoogleCloud CLI Core Libraries                       │ core                     │ 21.9 MiB │
└───────────────┴──────────────────────────────────────────────────────┴──────────────────────────┴──────────┘
To install or remove components at your current SDK version [371.0.0], run:
  $ gcloud components install COMPONENT_ID
  $ gcloud components remove COMPONENT_ID

To update your SDK installation to the latest version [371.0.0], run:
  $ gcloud components update

You can see cloud_sql_proxy is on the list of components and it’s also not installed already. Let’s install it by executing:

gcloud components install cloud_sql_proxy

Output:

Your current Cloud SDK version is: 371.0.0
Installing components from version: 371.0.0

┌─────────────────────────────────────────────────────────────────────────┐
│                   These components will be installed.                   │
├─────────────────────────────┬─────────────────────┬─────────────────────┤
│             Name            │       Version       │         Size        │
├─────────────────────────────┼─────────────────────┼─────────────────────┤
│ Cloud SQL Proxy             │              1.27.0 │             7.6 MiB │
└─────────────────────────────┴─────────────────────┴─────────────────────┘

For the latest full release notes, please visit:
  https://cloud.google.com/sdk/release_notes

Do you want to continue (Y/n)?

Press Y and then the return key. The installation will begin and you will have to wait a couple minutes until it’s ready.

Adding cloud_sql_proxy to the path

When installation is completed you can attempt to execute cloud_sql_proxy, but you will notice that such binary is not available.

cloud_sql_proxy

Output:

zsh: command not found: cloud_sql_proxy

This is because gcloud uses a directory which is not being taken into account in the PATH environment variable. You must add the directory where gcloud is storing the binaries to your PATH environment variable in order to make it reachable when executing the cloud_sql_proxy command.

Let’s use which command to check where is gcloud binary stored:

which gcloud

Output:

/usr/local/bin/gcloud

If you go to /usr/local/bin/ you will notice that every file under /bin/ is a symbolic link to a binary which is actually stored in its own installation directory.

Change directories to /usr/local/bin/ by executing:

cd /usr/local/bin

Then list entries by executing the l command and find the symbolic link to the gcloud binary. The entry must look similar to:

gcloud -> /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin/gcloud

You can see that gcloud binary is actually stored on:

/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin

So lets change directories to that path:

cd /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin

If you run ls command on /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin you will see that cloud_sql_proxy is listed there. This means that you have to make sure that this directory is listed in our PATH environment variable so it’s reachable when executing: cloud_sql_proxy.

Open you rc file to add the path to the PATH environment variable. If you are using BASH then you are interested on .bashrc. I’m a Oh My Zsh user so I’m interested on .zshrc instead.

vim ~/.zshrc

Add the following line to the very bottom of the file and save it.

PATH="$PATH:/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin"

Finally use source command to load the terminal instance configuration:

# Bash
source ~/.bashrc

# ZSH/Oh My Zsh
source ~/.zshrc

Make sure cloud_sql_proxy is reachable:

cloud_sql_proxy --version

Output:

Cloud SQL Auth proxy: 1.27.0+darwin.amd64

© 2025 Leo Borai. All rights reserved.