Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google Cloud SQL proxy couldn't find default credentials

I'm trying to run Google Cloud SQL proxy locally like this:

$ ./cloud_sql_proxy -instances project-name:region-name:instance-id tcp:3306

But it's returning

google: could not find default credentials. See https://developers.google.com/accounts/docs/application-default-credentials for mor information.

My Google Cloud SDK is already installed and logged in to Google.

How do I fix this?

like image 798
starleaf1 Avatar asked Dec 19 '16 04:12

starleaf1


People also ask

How do I connect to a SQL Cloud proxy?

Start the Cloud SQL Auth proxyReplace INSTANCE_CONNECTION_NAME with the instance connection name you copied in the previous step. At the Enter password: prompt, enter the password of your MySQL root user account. Verify that the MySQL prompt appears. You have connected to your database using the mysql client.

Does setting up Cloudsql proxy require authentication?

The Cloud SQL Auth proxy requires authenticating as a Cloud SQL IAM identity to authorize your connections to a Cloud SQL instance.


2 Answers

Two problems may be generating your problem.

To find what is login, using:

gcloud auth login 

1. You haven't application default credentials

If you have a recent version of gcloud you will get:

WARNING: `gcloud auth login` no longer writes application default credentials. 

To make your local application use your credentials you need to do (ref):

gcloud auth application-default login 

If you don't see this warning consider updating gcloud, with:

gcloud components update 

2. You haven't defined your project

After login, you should see:

Your current project is [project-id]. 

Once again two solutions:

a. Associate a project

If you are not seeing this, do (ref):

gcloud config set project PROJECT_ID 

b. Use global --project flag in the call

In your command associate a project:

.\cloud_sql_proxy -instances=project-id:region-name:instance-id=tcp:3306 --project=project-id 
like image 67
NBajanca Avatar answered Oct 08 '22 20:10

NBajanca


Google application default credentials are managed separately from gcloud credentials.

Use

gcloud auth application-default login

instead to setup your user credentials as application default. See reference for more info.

Previously gcloud auth login did this, but with more recent Cloud SDK versions this is no longer the case.

Note that switching gcloud configuration or setting account will not update application default credentials. Only commands in gcloud auth application-default can be used to manage these.

Also to use service account as application default credential you can use it directly by downloading its json key from developer console.

like image 30
cherba Avatar answered Oct 08 '22 20:10

cherba