Connetti da Compute Engine

In questa pagina viene descritto come utilizzare il client sqlcmd, installato su di Compute Engine, per la connessione a Cloud SQL.

Puoi utilizzare l'IP privato, l'IP pubblico, il proxy di autenticazione Cloud SQL o l'immagine Docker del proxy di autenticazione Cloud SQL.

Per istruzioni passo passo sull'esecuzione di un'istanza web di esempio Compute Engine connessa a Cloud SQL, osserva guida rapida per la connessione da Compute Engine.

Prima di iniziare

Questa attività non include istruzioni per configurare il tuo di Compute Engine. Se hai bisogno di aiuto per creare configurazione di un'istanza Compute Engine, consulta Documentazione di Compute Engine.

IP privato

Per connetterti a Cloud SQL da un'istanza Compute Engine utilizzando l'IP privato, l'accesso privato ai servizi deve essere configurato per il tuo ambiente e L'istanza Cloud SQL deve essere configurata in modo da utilizzare l'IP privato. Il tuo L'istanza Compute Engine deve trovarsi nella stessa regione all'istanza Cloud SQL e sulla rete configurata per un cluster privato connessione. Scopri di più.

1. Configura l'istanza per l'utilizzo dell'IP privato

Segui le istruzioni in Configurazione della connettività IP privato.

2. Apri una connessione del terminale Cloud Shell all'istanza di Compute Engine.

Usa le istruzioni appropriate, a seconda del funzionamento dell'istanza di sistema:

Se la tua istanza Compute Engine esegue un RHEL o Immagine pubblica di CentOS, SELinux potrebbe bloccare la connessione al proxy. Se questo devi configurare la funzione SELinux per consentire la connessione.

Per ulteriori informazioni su SELinux per RHEL, vedi documentazione di RHEL. Per ulteriori informazioni su SELinux per CentOS, consulta la documentazione di CentOS.

3. Installa il client sqlcmd sull'istanza Compute Engine, se non è già installata.

4. Connettiti al client sqlcmd.

sqlcmd -S CLOUD_SQL_PRIVATE_IP_ADDRESS -U USERNAME

Puoi trovare l'indirizzo IP privato nella Pagina Istanze Cloud SQL o eseguendo il codice seguente Comando gcloud:

gcloud sql instances list

IP pubblico

Per connetterti utilizzando l'IP pubblico:

1. Aggiungi un indirizzo IP IPv4 statico all'istanza Compute Engine, se non ne ha già uno.

Non puoi connetterti a Compute Engine tramite IPv6. Per informazioni sull'aggiunta di un un indirizzo IP statico, vedi Prenotazione di un nuovo indirizzo IP esterno statico in Compute Engine documentazione.

2. Autorizza l'indirizzo IP statico dell'istanza Compute Engine come rete in grado di connettersi all'istanza Cloud SQL.

Per ulteriori informazioni, vedi Configurazione dell'accesso per connessioni con IP pubblico.

3. Apri una connessione del terminale Cloud Shell all'istanza di Compute Engine.

Usa le istruzioni appropriate, a seconda del funzionamento dell'istanza di sistema:

Se la tua istanza Compute Engine esegue un RHEL o Immagine pubblica di CentOS, SELinux potrebbe bloccare la connessione al proxy. Se questo devi configurare la funzione SELinux per consentire la connessione.

Per ulteriori informazioni su SELinux per RHEL, vedi documentazione di RHEL. Per ulteriori informazioni su SELinux per CentOS, consulta la documentazione di CentOS.

4. Installa il client sqlcmd sull'istanza Compute Engine, se non è già installata.

5. Connettiti al client sqlcmd.

sqlcmd -S CLOUD_SQL_PUBLIC_IP_ADDR -U USERNAME

Puoi trovare l'indirizzo IP pubblico Pagina Istanze Cloud SQL o eseguendo il codice seguente Comando gcloud:

gcloud sql instances list

Per un esempio di come connetterti tramite SSL, vedi Connessione tramite SSL.

6. Viene visualizzato il prompt sqlcmd.

Proxy di autenticazione Cloud SQL

Per connetterti utilizzando il proxy di autenticazione Cloud SQL da Compute Engine:
.

1. Abilita l'API Cloud SQL Admin.

Abilita l'API

2. Crea un account di servizio.

  1. Nella console Google Cloud, vai alla pagina Account di servizio.

    Vai ad Account di servizio

  2. Seleziona il progetto che contiene l'istanza Cloud SQL.
  3. Fai clic su Crea account di servizio.
  4. Nel campo Nome account di servizio, inserisci un nome descrittivo per l'account di servizio.
  5. Modifica l'ID account di servizio impostando un valore univoco e riconoscibile, poi fai clic su Crea e continua.
  6. Fai clic sul campo Seleziona un ruolo e scegli uno dei seguenti ruoli:
      .
    • Cloud SQL > Client Cloud SQL
    • Cloud SQL > Editor Cloud SQL
    • Cloud SQL > Amministratore Cloud SQL
  7. Fai clic su Fine per completare la creazione dell'account di servizio.
  8. Fai clic sul menu Azioni per il nuovo account di servizio e seleziona Gestisci chiavi.
  9. Fai clic sul menu a discesa Aggiungi chiave e quindi su Crea nuova chiave.
  10. Verifica che il tipo di chiave sia JSON e fai clic su Crea.

    Il file della chiave privata viene scaricato sul computer. Puoi spostarlo in un'altra in ogni località. Tieni al sicuro il file della chiave.

Se l'istanza Compute Engine si trova in un progetto diverso da quello nell'istanza Cloud SQL, assicurati che l'account di servizio abbia l'account di servizio corretto autorizzazioni nel progetto che contiene l'istanza Cloud SQL:

  1. Vai all'elenco delle istanze Compute Engine nella console Google Cloud.

    Vai all'elenco delle istanze Compute Engine

  2. Se necessario, seleziona il progetto associato a Compute Engine in esecuzione in un'istanza Compute Engine.
  3. Seleziona l'istanza Compute Engine per visualizzarne le proprietà.
  4. Nelle proprietà dell'istanza Compute Engine, copia il nome l'account di servizio.
  5. Vai alla sezione IAM e pagina Progetti amministratore nella console Google Cloud.

    Vai alla sezione IAM & Pagina Progetti amministratore

  6. Seleziona il progetto che contiene l'istanza di Cloud SQL.
  7. Cerca il nome dell'account di servizio.
  8. Se l'account di servizio è già presente e ha un ruolo che include Autorizzazione cloudsql.instances.connect, puoi procedere all'indirizzo Passaggio 4.

    Cloud SQL Client, Cloud SQL Editor e I ruoli Cloud SQL Admin, così come i ruoli legacy, forniscono l'autorizzazione necessaria Ruoli di progetto Editor e Owner.

  9. In caso contrario, aggiungi l'account di servizio facendo clic su Aggiungi.
  10. Nella finestra di dialogo Aggiungi entità, specifica il nome dell'account di servizio e seleziona un ruolo che includa l'autorizzazione cloudsql.instances.connect funzionerà qualsiasi ruolo predefinito di Cloud SQL diverso da Visualizzatore.

    In alternativa, puoi utilizzare il ruolo Editor di base selezionando Progetto > Editor, ma Il ruolo Editor include le autorizzazioni in Google Cloud.

    Se non vedi questi ruoli, l'utente Google Cloud potrebbe non disporre Autorizzazione resourcemanager.projects.setIamPolicy. Puoi verificare le tue autorizzazioni nella pagina IAM nella nella console Google Cloud e cercando il tuo ID utente.

  11. Fai clic su Aggiungi.

    Ora vedi l'account di servizio elencato con il ruolo specificato.

3. Apri una connessione del terminale all'istanza Compute Engine.

Usa le istruzioni appropriate, a seconda del funzionamento dell'istanza di sistema:

Se la tua istanza Compute Engine esegue un RHEL o Immagine pubblica di CentOS, SELinux potrebbe bloccare la connessione al proxy. Se questo devi configurare la funzione SELinux per consentire la connessione.

Per ulteriori informazioni su SELinux per RHEL, vedi documentazione di RHEL. Per ulteriori informazioni su SELinux per CentOS, consulta la documentazione di CentOS.

4. Installa il client sqlcmd sull'istanza Compute Engine, se non è già installata.

5. Installa il proxy di autenticazione Cloud SQL sull'istanza Compute Engine.

Linux a 64 bit

  1. Scarica il proxy di autenticazione Cloud SQL:
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.11.4/cloud-sql-proxy.linux.amd64
    
  2. Rendi eseguibile il proxy di autenticazione Cloud SQL:
    chmod +x cloud-sql-proxy
    

Linux a 32 bit

  1. Scarica il proxy di autenticazione Cloud SQL:
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.11.4/cloud-sql-proxy.linux.386
    
  2. Se il comando curl non viene trovato, esegui sudo apt install curl e ripeti il comando di download.
  3. Rendi eseguibile il proxy di autenticazione Cloud SQL:
    chmod +x cloud-sql-proxy
    

Windows a 64 bit

Clic destro https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.11.4/cloud-sql-proxy.x64.exe e seleziona Salva link con nome per scaricare il proxy di autenticazione Cloud SQL. Rinomina il file come cloud-sql-proxy.exe.

Windows a 32 bit

Clic destro https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.11.4/cloud-sql-proxy.x86.exe e seleziona Salva link con nome per scaricare il proxy di autenticazione Cloud SQL. Rinomina il file come cloud-sql-proxy.exe.

Immagine Docker del proxy di autenticazione Cloud SQL

Il proxy di autenticazione Cloud SQL ha immagini container diverse, ad esempio distroless, alpine, e buster. L'immagine container proxy di autenticazione Cloud SQL predefinita utilizza distroless, che non contiene alcuna shell. Se hai bisogno di una shell o di strumenti correlati, scarica un'immagine basata su alpine o buster. Per ulteriori informazioni, vedi Immagini container del proxy di autenticazione Cloud SQL.

Puoi eseguire il pull dell'immagine più recente sulla tua macchina locale utilizzando Docker, utilizzando questo comando:

docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.11.4

Altro sistema operativo

Per altri sistemi operativi non inclusi qui, puoi compilare il proxy di autenticazione Cloud SQL dall'origine.

6. Avviare il proxy di autenticazione Cloud SQL.

Puoi avviare il proxy di autenticazione Cloud SQL utilizzando socket TCP o l'immagine Docker del proxy di autenticazione Cloud SQL. Il file binario del proxy di autenticazione Cloud SQL si connette a una o più istanze Cloud SQL specificate nella riga di comando e apre una connessione locale come un socket TCP. Altre applicazioni e servizi, come il codice dell'applicazione o di gestione di database, possono connettersi alle istanze Cloud SQL attraverso la connessione socket TCP.

socket TCP

Per le connessioni TCP, il proxy di autenticazione Cloud SQL rimane in ascolto su localhost(127.0.0.1) per impostazione predefinita. Pertanto, se specifichi --port PORT_NUMBER per un'istanza, la connessione locale è alle ore 127.0.0.1:PORT_NUMBER.

In alternativa, puoi specificare un indirizzo diverso per la connessione locale. Ad esempio, ecco come fare in modo che il proxy di autenticazione Cloud SQL rimanga in ascolto all'indirizzo 0.0.0.0:1234 per il connessione locale:

./cloud-sql-proxy --address 0.0.0.0 --port 1234 INSTANCE_CONNECTION_NAME
  1. Copia il tuo INSTANCE_CONNECTION_NAME. Puoi trovare nella pagina Panoramica per la tua istanza nel Console Google Cloud o eseguendo seguente comando:

        gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'

    Ad esempio: myproject:myregion:myinstance.

  2. Se l'istanza ha sia l'IP pubblico che quello privato configurato e vuoi che Proxy di autenticazione Cloud SQL per utilizzare l'indirizzo IP privato, devi fornire la seguente opzione quando avvii il proxy di autenticazione Cloud SQL:
    --private-ip
  3. Se utilizzi un account di servizio per autenticare il proxy di autenticazione Cloud SQL, prendi nota della posizione sul computer client del file della chiave privata creato al momento della creazione. l'account di servizio.
  4. Avviare il proxy di autenticazione Cloud SQL.

    Alcune possibili stringhe di chiamata del proxy di autenticazione Cloud SQL:

    • Utilizzo dell'autenticazione di Cloud SDK:
      ./cloud-sql-proxy --port 1433 INSTANCE_CONNECTION_NAME
      
      La porta specificata non deve essere già in uso, ad esempio da un server di database locale.
    • Utilizzo di un account di servizio e inclusione specifica del nome della connessione dell'istanza (consigliato per ambienti di produzione):
      ./cloud-sql-proxy \
      --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &
      
      

    Per saperne di più sulle opzioni del proxy di autenticazione Cloud SQL, consulta Opzioni per l'autenticazione del proxy di autenticazione Cloud SQL.

Docker

Per eseguire il proxy di autenticazione Cloud SQL in un container Docker, utilizza il Docker proxy di autenticazione Cloud SQL disponibile in Google Container Registry.

Puoi avviare il proxy di autenticazione Cloud SQL utilizzando socket TCP o socket Unix, con illustrati di seguito. Le opzioni utilizzano un INSTANCE_CONNECTION_NAME come la stringa di connessione per identificare un'istanza Cloud SQL. Puoi trovare INSTANCE_CONNECTION_NAME nella pagina Panoramica del tuo nella console Google Cloud. o eseguendo il comando seguente comando:

gcloud sql instances describe INSTANCE_NAME
.

Ad esempio: myproject:myregion:myinstance.

A seconda del linguaggio e dell'ambiente, puoi avviare il proxy di autenticazione Cloud SQL utilizzando socket TCP o socket Unix. I socket Unix non sono supportati per applicazioni scritte nel linguaggio di programmazione Java o per Windows completamente gestito di Google Cloud.

Utilizzo di socket TCP

docker run -d \\
  -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \\
  -p 127.0.0.1:1433:1433 \\
  gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.11.4 \\
  --address 0.0.0.0 --port 1433 \\
  --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME

Se utilizzi le credenziali fornite dalla tua istanza Compute Engine, non includono il parametro --credentials-file e -v PATH_TO_KEY_FILE:/path/to/service-account-key.json dalla riga di comando.

Specifica sempre il prefisso 127.0.0.1 in -p in modo che il proxy di autenticazione Cloud SQL non sia esposti all'esterno dell'host locale. "0.0.0.0" nel parametro instances per rendere la porta accessibile dall'esterno di Docker containerizzato.

Utilizzo di socket Unix

docker run -d -v /cloudsql:/cloudsql \\
  -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \\
  gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.11.4 --unix-socket=/cloudsql \\
  --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME

Se utilizzi le credenziali fornite dalla tua istanza Compute Engine, non includono il parametro --credentials-file e -v PATH_TO_KEY_FILE:/path/to/service-account-key.json dalla riga di comando.

Se utilizzi un'immagine ottimizzata per i container, usa una directory scrivibile al posto di /cloudsql, ad esempio:

-v /mnt/stateful_partition/cloudsql:/cloudsql

Puoi specificare più istanze, separate da virgole. Puoi anche utilizzare Metadati Compute Engine per determinare in modo dinamico le istanze a cui connettersi. Scopri di più sui parametri del proxy di autenticazione Cloud SQL.

7. Avvia la sessione sqlcmd.

La stringa di connessione che utilizzi dipende dal fatto che tu abbia avviato il proxy di autenticazione Cloud SQL utilizzando un socket TCP o e Docker.

socket TCP

  1. Avvia il client sqlcmd:
    sqlcmd -S tcp:127.0.0.1,1433 -U USERNAME -P PASSWORD
    

    Quando ti connetti utilizzando socket TCP, il proxy di autenticazione Cloud SQL è accessibile tramite 127.0.0.1.

  2. Se richiesto, inserisci la password.
  3. Viene visualizzato il prompt sqlcmd.

Serve aiuto? Per assistenza nella risoluzione dei problemi relativi al proxy, consulta Risoluzione dei problemi di connessioni del proxy di autenticazione Cloud SQL. o consulta la pagina dell'assistenza Cloud SQL.

Passaggi successivi