Connessione da Compute Engine

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

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

Per istruzioni dettagliate sull'esecuzione di un'applicazione web di esempio di Compute Engine connessa a Cloud SQL, consulta la guida rapida per la connessione da Compute Engine.

Prima di iniziare

Questa attività non include istruzioni per la configurazione dell'istanza di Compute Engine. Se hai bisogno di aiuto per creare e configurare un'istanza di Compute Engine, consulta la documentazione di Compute Engine.

IP privato

Per connetterti a Cloud SQL da un'istanza Compute Engine utilizzando un IP privato, devi configurare l'accesso privato ai servizi per il tuo ambiente e l'istanza Cloud SQL deve essere configurata in modo da utilizzare l'IP privato. L'istanza di Compute Engine deve trovarsi nella stessa regione dell'istanza Cloud SQL e deve essere collegata alla rete configurata per una connessione privata. Scopri di più

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

Segui le istruzioni per configurare la connettività IP privata.

2. Apri una connessione terminale Cloud Shell alla tua istanza di Compute Engine.

Utilizza le istruzioni appropriate, a seconda del sistema operativo dell'istanza:

Se l'istanza di Compute Engine è in esecuzione su un'immagine pubblica RHEL o CentOS, SELinux potrebbe bloccare la connessione proxy. In questo caso, devi configurare la funzionalità SELinux per consentire la connessione.

Per scoprire di più su SELinux per RHEL, consulta la documentazione di RHEL. Per ulteriori informazioni su SELinux per CentOS, consulta la documentazione di CentOS.

3. Installare il client mysql sull'istanza di Compute Engine, se non è già installato.

  1. Scarica il server della community di MySQL per la tua piattaforma dalla pagina di download del server della community di MySQL.
    Il server della community include il client MySQL.
  2. Installa il server della community seguendo le istruzioni riportate nella pagina di download.

Per saperne di più sull'installazione di MySQL, consulta Installazione e upgrade di MySQL.

4. Connettersi con il client mysql.

mysql -h CLOUD_SQL_PRIVATE_IP_ADDRESS -u USERNAME -p

Puoi trovare l'indirizzo IP privato nella pagina delle istanze Cloud SQL o eseguendo il seguente comando gcloud:

gcloud sql instances list

IP pubblico

Per la connessione tramite IP pubblico:


Per seguire le istruzioni dettagliate per questa attività direttamente nell'editor di Cloud Shell, fai clic su Procedura guidata:

Procedura guidata


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

Non puoi connetterti a Compute Engine utilizzando IPv6. Per informazioni sull'aggiunta di un indirizzo IP statico, consulta la pagina relativa alla prenotazione di un nuovo indirizzo IP esterno statico nella documentazione di Compute Engine.

2. Autorizza l'indirizzo IP statico dell'istanza Compute Engine come rete che può connettersi all'istanza Cloud SQL.

Per saperne di più, consulta Configurazione dell'accesso per le connessioni IP pubbliche.

3. Apri una connessione terminale Cloud Shell alla tua istanza di Compute Engine.

Utilizza le istruzioni appropriate, a seconda del sistema operativo dell'istanza:

Se l'istanza di Compute Engine è in esecuzione su un'immagine pubblica RHEL o CentOS, SELinux potrebbe bloccare la connessione proxy. In questo caso, devi configurare la funzionalità SELinux per consentire la connessione.

Per scoprire di più su SELinux per RHEL, consulta la documentazione di RHEL. Per ulteriori informazioni su SELinux per CentOS, consulta la documentazione di CentOS.

4. Installare il client mysql sull'istanza di Compute Engine, se non è già installato.

  1. Scarica il server della community di MySQL per la tua piattaforma dalla pagina di download del server della community di MySQL.
    Il server della community include il client MySQL.
  2. Installa il server della community seguendo le istruzioni riportate nella pagina di download.

Per saperne di più sull'installazione di MySQL, consulta Installazione e upgrade di MySQL.

5. Connettersi con il client mysql.

mysql -h CLOUD_SQL_PUBLIC_IP_ADDR -u USERNAME -p

Puoi trovare l'indirizzo IP pubblico nella pagina delle istanze Cloud SQL o eseguendo il seguente comando gcloud:

gcloud sql instances list

Per un esempio di connessione tramite SSL, consulta Connessione tramite SSL.

6. Viene visualizzato il prompt mysql.

7. Se è necessario mantenere attive le connessioni inutilizzate:

Imposta il keepalive TCP.

Per saperne di più, consulta Comunicazione tra le istanze e Internet nella documentazione di Compute Engine.

Le connessioni vengono mantenute automaticamente per le istanze.

Proxy di autenticazione Cloud SQL

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

1. Abilitare 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 in un valore univoco e riconoscibile, quindi 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 di Cloud SQL
    • Cloud SQL > Amministratore di Cloud SQL
  7. Fai clic su Fine per completare la creazione dell'account di servizio.
  8. Fai clic sul menu azione per il nuovo account di servizio, quindi seleziona Gestisci chiavi.
  9. Fai clic sul menu a discesa Aggiungi chiave, quindi fai clic 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 sulla macchina. Puoi spostarlo in un'altra posizione. Proteggi il file della chiave.

Se l'istanza di Compute Engine si trova in un progetto diverso da quello dell'istanza di Cloud SQL, assicurati che il suo account di servizio disponga delle autorizzazioni appropriate nel progetto che contiene l'istanza di Cloud SQL:

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

    Vai all'elenco delle istanze di Compute Engine

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

    Vai alla pagina Progetti IAM e amministrazione

  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 l'autorizzazione cloudsql.instances.connect, puoi andare al passaggio 4.

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

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

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

    Se non vedi questi ruoli, l'utente Google Cloud potrebbe non avere l'autorizzazione resourcemanager.projects.setIamPolicy. Per verificare le autorizzazioni, vai alla pagina IAM nella console Google Cloud e cerca il tuo ID utente.

  11. Fai clic su Add (Aggiungi).

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

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

Utilizza le istruzioni appropriate, a seconda del sistema operativo dell'istanza:

Se l'istanza di Compute Engine è in esecuzione su un'immagine pubblica RHEL o CentOS, SELinux potrebbe bloccare la connessione proxy. In questo caso, devi configurare la funzionalità SELinux per consentire la connessione.

Per scoprire di più su SELinux per RHEL, consulta la documentazione di RHEL. Per ulteriori informazioni su SELinux per CentOS, consulta la documentazione di CentOS.

4. Installare il client mysql sull'istanza di Compute Engine, se non è già installato.

  1. Scarica il server della community di MySQL per la tua piattaforma dalla pagina di download del server della community di MySQL.
    Il server della community include il client MySQL.
  2. Installa il server della community seguendo le istruzioni riportate nella pagina di download.

Per saperne di più sull'installazione di MySQL, consulta Installazione e upgrade di MySQL.

5. Installare il proxy di autenticazione Cloud SQL sull'istanza di 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.3.0/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.3.0/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

Fai clic con il tasto destro del mouse su https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.3.0/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

Fai clic con il tasto destro del mouse su https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.3.0/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 proxy di autenticazione Cloud SQL

Per comodità, diverse immagini container che contengono il proxy di autenticazione Cloud SQL sono disponibili su GitHub nel repository proxy di autenticazione Cloud SQL. Puoi eseguire il pull dell'immagine più recente sulla tua macchina locale utilizzando Docker con il seguente comando:
docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.3.0

Altro sistema operativo

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

6. Avvia il proxy di autenticazione Cloud SQL.

A seconda del linguaggio e dell'ambiente, puoi avviare il proxy di autenticazione Cloud SQL utilizzando socket TCP, socket Unix o l'immagine Docker del proxy di autenticazione Cloud SQL. Il programma binario del proxy di autenticazione Cloud SQL si connette a una o più istanze Cloud SQL specificate dalla riga di comando e apre una connessione locale come TCP o socket Unix. Altri servizi e applicazioni, come gli strumenti client per il codice dell'applicazione o il database, possono connettersi alle istanze Cloud SQL tramite queste connessioni socket TCP o Unix.

socket TCP

Per le connessioni TCP, il proxy di autenticazione Cloud SQL è in ascolto su localhost(127.0.0.1) per impostazione predefinita. Di conseguenza, quando specifichi --port PORT_NUMBER per un'istanza, la connessione locale è a 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 della connessione locale su 0.0.0.0:1234:

./cloud-sql-proxy --address 0.0.0.0 --port 1234 INSTANCE_CONNECTION_NAME
  1. Copia il tuo INSTANCE_CONNECTION_NAME. Puoi trovarlo nella pagina Panoramica dell'istanza nella console Google Cloud o eseguendo il seguente comando:

    gcloud sql instances describe INSTANCE_CONNECTION_NAME
    .

    Ad esempio: myproject:myregion:myinstance.

  2. Se l'istanza ha configurato un IP pubblico e uno privato e vuoi che il proxy di autenticazione Cloud SQL utilizzi l'indirizzo IP privato, devi fornire la seguente opzione all'avvio del 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 località sul file client della chiave privata creata al momento della creazione dell'account di servizio.
  4. Avvia 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 3306 INSTANCE_CONNECTION_NAME
      
      La porta specificata non deve essere già in uso, ad esempio da parte di un server di database locale.
    • Utilizzo di un account di servizio e inclusione esplicita del nome della connessione dell'istanza (consigliato per gli ambienti di produzione):
      ./cloud-sql-proxy \
      --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &
      
      

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

Bussole Unix

Il proxy di autenticazione Cloud SQL è in ascolto su un socket Unix, un meccanismo Posix standard per utilizzare una cartella per gestire la comunicazione tra due processi in esecuzione sullo stesso host. I vantaggi dell'utilizzo di socket Unix sono una sicurezza migliorata e una latenza minore, ma non puoi accedere a un socket Unix da una macchina esterna.

Per creare e utilizzare un socket Unix, la directory di destinazione deve esistere e sia il proxy di autenticazione Cloud SQL che l'applicazione devono avere accesso in lettura e scrittura.

  1. Se utilizzi la specifica esplicita dell'istanza, copia il tuo INSTANCE_CONNECTION_NAME. Puoi trovarla nella pagina Panoramica dell'istanza nella console Google Cloud o eseguendo il seguente comando:

    gcloud sql instances describe INSTANCE_CONNECTION_NAME
    .

    Ad esempio: myproject:myregion:myinstance.

  2. Crea la directory in cui si troveranno i socket proxy di autenticazione Cloud SQL:
    sudo mkdir /cloudsql; sudo chmod 777 /cloudsql
  3. Se utilizzi un account di servizio per autenticare il proxy di autenticazione Cloud SQL, prendi nota della località sul file client della chiave privata creata al momento della creazione dell'account di servizio.
  4. Apri una nuova finestra del terminale Cloud Shell e avvia il proxy di autenticazione Cloud SQL.

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

    • Utilizzo di un account di servizio e inclusione esplicita del nome della connessione dell'istanza (consigliato per gli ambienti di produzione):
      ./cloud-sql-proxy --unix-socket /cloudsql
      --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &
    • Utilizzo dell'autenticazione di Cloud SDK e del rilevamento automatico delle istanze:
      ./cloud-sql-proxy --unix-socket /cloudsql &

    Avvia il proxy di autenticazione Cloud SQL nel relativo terminale Cloud Shell, in modo da poter monitorare il relativo output senza che venga combinato con l'output di altri programmi.

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

Docker

Per eseguire il proxy di autenticazione Cloud SQL in un container Docker, utilizza l'immagine Docker del proxy di autenticazione Cloud SQL disponibile da Google Container Registry.

Puoi avviare il proxy di autenticazione Cloud SQL utilizzando i socket TCP o Unix, con i comandi mostrati di seguito. Le opzioni utilizzano INSTANCE_CONNECTION_NAME come stringa di connessione per identificare un'istanza Cloud SQL. Puoi trovare la pagina INSTANCE_CONNECTION_NAME nella pagina Panoramica dell'istanza nella console Google Cloud oppure eseguendo questo 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 Unix. I socket Unix non sono supportati per le applicazioni scritte nel linguaggio di programmazione Java o per l'ambiente Windows.

Utilizzo di socket TCP

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

Se utilizzi le credenziali fornite dall'istanza di Compute Engine, non includere il parametro --credentials-file e la riga -v PATH_TO_KEY_FILE:/path/to/service-account-key.json.

Specifica sempre il prefisso 127.0.0.1 in -p in modo che il proxy di autenticazione Cloud SQL non sia esposto all'esterno dell'host locale. È richiesto "0.0.0.0" nel parametro delle istanze per rendere la porta accessibile dall'esterno del container Docker.

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.3.0 --unix-socket=/cloudsql \\
  --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME

Se utilizzi le credenziali fornite dall'istanza di Compute Engine, non includere il parametro --credentials-file e la riga -v PATH_TO_KEY_FILE:/path/to/service-account-key.json.

Se utilizzi un'immagine container ottimizzata, 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 i metadati di Compute Engine per determinare in modo dinamico le istanze a cui connetterti. Scopri di più sui parametri del proxy di autenticazione Cloud SQL.

7. Avvia la sessione mysql.

La stringa di connessione utilizzata varia a seconda che tu abbia avviato il proxy di autenticazione Cloud SQL utilizzando un socket TCP, un socket UNIX o un Docker.

socket TCP

  1. Avvia il client mysql:
    mysql -u USERNAME -p --host 127.0.0.1
    

    Quando ti connetti utilizzando i socket TCP, si accede al proxy di autenticazione Cloud SQL tramite 127.0.0.1.

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

Utilizzo di socket Unix

  1. Avvia il client mysql:
    mysql -u USERNAME -p -S /cloudsql/INSTANCE_CONNECTION_NAME
    
  2. Inserisci la password.
  3. Viene visualizzato il prompt mysql.

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

Passaggi successivi