Connetti da Compute Engine

Questa pagina descrive come utilizzare il client mysql, installato su un'istanza Compute Engine, per la connessione a Cloud SQL.

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

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 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 impostare l'accesso privato ai servizi per il tuo ambiente e l'istanza Cloud SQL deve essere configurata per utilizzare l'IP privato. L'istanza di Compute Engine deve trovarsi nella stessa area geografica dell'istanza di Cloud SQL e sulla rete configurata per una connessione privata. Scopri di più.

1. Configura la tua istanza per utilizzare l'IP privato

Segui le istruzioni riportate in Configurare la connettività IP privata.

2. Apri una connessione del 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 esegue 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 saperne di più su SELinux per CentOS, consulta la documentazione di CentOS.

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

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

Per ulteriori informazioni sull'installazione di MySQL, consulta Installazione e upgrade di MySQL.

4. Connettiti al client mysql.

mysql -h CLOUD_SQL_PRIVATE_IP_ADDRESS -u USERNAME -p

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

gcloud sql instances list

IP pubblico

Per connettersi utilizzando l'IP pubblico:


Per indicazioni dettagliate su questa attività direttamente nell'editor di Cloud Shell, fai clic su Procedura guidata:

Procedura guidata


Nelle sezioni seguenti puoi seguire la stessa procedura utilizzata per fare clic su Procedura guidata.

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

Impossibile connettersi a Compute Engine mediante 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 ulteriori informazioni, consulta la pagina Configurare l'accesso per le connessioni IP pubbliche.

3. Apri una connessione del 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 esegue 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 saperne di più su SELinux per CentOS, consulta la documentazione di CentOS.

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

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

Per ulteriori informazioni sull'installazione di MySQL, consulta Installazione e upgrade di MySQL.

5. Connettiti al 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, vedi Connessione con SSL.

6. Viene visualizzato il prompt mysql.

7. Se devi mantenere attive le connessioni inutilizzate:

Imposta il keepalive TCP.

Per ulteriori informazioni, consulta Comunicazione tra le istanze e Internet nella documentazione di Compute Engine.

Le connessioni vengono mantenute automaticamente per le istanze.

Proxy di Cloud SQL Auth

Per connetterti utilizzando il proxy Cloud SQL Auth da Compute Engine:

1. Abilita l'API Cloud SQL Admin.

Abilita l'API

2. Creare un account di servizio.

  1. In Google Cloud Console, vai alla pagina Account di servizio.

    Vai agli 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:
    • Client Cloud SQL > client Cloud SQL
    • Cloud SQL > Editor Cloud SQL
    • Amministratore Cloud SQL > 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 Create (Crea).

    Il file della chiave privata viene scaricato sulla macchina. Puoi spostarlo in un'altra posizione. Tieni il file della chiave al sicuro.

Se l'istanza di Compute Engine si trova in un progetto diverso da quello dell'istanza di Cloud SQL, assicurati che il relativo 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 in Google Cloud Console.

    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 di amministrazione in Google Cloud Console.

    Vai alla pagina Progetti amministratore di IAM

  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 legacy di Editor e Owner.

  9. In caso contrario, aggiungi l'account di servizio facendo clic su Aggiungi.
  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 ( Qualsiasi ruolo predefinito di Cloud SQL diverso da Visualizzatore funzionerà).

    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, è possibile che l'utente di Google Cloud non abbia l'autorizzazione resourcemanager.projects.setIamPolicy. Per verificare le tue autorizzazioni, accedi alla pagina IAM in Google Cloud Console e cerca il tuo ID utente.

  11. Fai clic su Aggiungi.

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

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

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

Se l'istanza di Compute Engine esegue 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 saperne di più su SELinux per CentOS, consulta la documentazione di CentOS.

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

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

Per ulteriori informazioni sull'installazione di MySQL, consulta Installazione e upgrade di MySQL.

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

Linux a 64 bit

  1. Scarica il proxy di autenticazione Cloud SQL:
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
    
  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:
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.386 -O cloud_sql_proxy
    
  2. Se il comando wget non viene trovato, esegui sudo apt-get install wget 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 pulsante destro del mouse su https://dl.google.com/cloudsql/cloud_sql_proxy_x64.exe e seleziona Salva link con nome per scaricare il proxy Cloud SQL Auth. Rinomina il file come cloud_sql_proxy.exe.

Windows a 32 bit

Fai clic con il pulsante destro del mouse su https://dl.google.com/cloudsql/cloud_sql_proxy_x86.exe e seleziona Salva link con nome per scaricare il proxy Cloud SQL Auth. Rinomina il file come cloud_sql_proxy.exe.

Immagine Docker proxy Cloud SQL Auth

Per convenienza, diverse immagini container che contengono il proxy di autenticazione Cloud SQL sono disponibili su GitHub nel repository proxy di Cloud SQL Auth. Puoi estrarre l'immagine più recente sulla tua macchina locale utilizzando Docker con il seguente comando:
docker pull gcr.io/cloudsql-docker/gce-proxy:1.31.0

Altro sistema operativo

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

6. Avvia il proxy di Cloud SQL Auth.

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

Prese TCP

Per le connessioni TCP, il proxy Cloud SQL Auth rimane in ascolto su localhost(127.0.0.1) per impostazione predefinita. Quindi, quando specifichi tcp:PORT_NUMBER per un'istanza, la connessione locale è 127.0.0.1:PORT_NUMBER.

In alternativa, puoi specificare un altro indirizzo per la connessione locale. Ad esempio, ecco come fare in modo che il proxy Cloud SQL Auth ascolti le 0.0.0.0:1234 per la connessione locale:

  ./cloud_sql_proxy -instances=INSTANCE_CONNECTION_NAME=tcp:0.0.0.0:1234
  1. Copia il tuo INSTANCE_CONNECTION_NAME. Puoi trovarlo nella pagina Panoramica della tua istanza in Google Cloud Console oppure eseguendo il comando seguente:

    gcloud sql instances describe INSTANCE_NAME
    .

    Ad esempio: myproject:myregion:myinstance.

  2. Se l'istanza è configurata con IP pubblico e privato e vuoi che il proxy di Cloud SQL Auth utilizzi l'indirizzo IP privato, devi fornire la seguente opzione all'avvio del proxy di Cloud SQL Auth:
    -ip_address_types=PRIVATE
  3. Se utilizzi un account di servizio per autenticare il proxy di autenticazione Cloud SQL, prendi nota della posizione sul tuo computer client nel file della chiave privata creato al momento della creazione dell'account di servizio.
  4. Avvia il proxy di Cloud SQL Auth.

    Ecco alcune possibili stringhe di chiamata proxy Cloud SQL:

    • Utilizzo dell'autenticazione di Cloud SDK:
      ./cloud_sql_proxy -instances=INSTANCE_CONNECTION_NAME=tcp:3306
      
      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 esplicita del nome della connessione all'istanza (consigliato per gli ambienti di produzione):
      ./cloud_sql_proxy -instances=INSTANCE_CONNECTION_NAME=tcp:3306 \
                        -credential_file=PATH_TO_KEY_FILE &
      

    Per ulteriori informazioni sulle opzioni del proxy Cloud SQL Auth, vedi Opzioni per l'autenticazione del proxy Cloud SQL Auth e Opzioni per specificare le istanze.

Prese Unix

Il proxy Cloud SQL Auth può rimanere in ascolto su un socket Unix, ossia un meccanismo standard di Posix per utilizzare una cartella per gestire le comunicazioni tra due processi in esecuzione sullo stesso host. I vantaggi dell'utilizzo di socket Unix sono migliori della sicurezza e della latenza, tuttavia 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 il proxy e l'applicazione Cloud SQL Auth devono disporre dell'accesso in lettura e scrittura.

  1. Se utilizzi una specifica esplicita dell'istanza, copia il tuo INSTANCE_CONNECTION_NAME. Puoi trovarlo nella pagina Panoramica relativa all'istanza in Google Cloud Console oppure eseguendo il comando seguente:

    gcloud sql instances describe INSTANCE_NAME
    .

    Ad esempio: myproject:myregion:myinstance.

  2. Crea la directory in cui si troverà i socket proxy di Cloud SQL Auth:
    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 posizione sul tuo computer client nel file della chiave privata creato 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.

    Ecco alcune possibili stringhe di chiamata proxy Cloud SQL:

    • Utilizzo di un account di servizio e inclusione esplicita del nome della connessione all'istanza (consigliato per gli ambienti di produzione):
      ./cloud_sql_proxy -dir=/cloudsql -instances=INSTANCE_CONNECTION_NAME
      -credential_file=PATH_TO_KEY_FILE &
    • Utilizzo dell'autenticazione Cloud SDK e del rilevamento automatico delle istanze:
      ./cloud_sql_proxy -dir=/cloudsql &

    Avvia il proxy di Cloud SQL Auth nel proprio terminale Cloud Shell, in modo da poter monitorare il suo output senza mischiarlo con quello di altri programmi.

    Per ulteriori informazioni sulle opzioni del proxy Cloud SQL Auth, vedi Opzioni per l'autenticazione del proxy Cloud SQL Auth e Opzioni per specificare le istanze.

Docker

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

Puoi avviare il proxy Cloud SQL Auth utilizzando i socket TCP o Unix, con i comandi descritti di seguito. Le opzioni utilizzano un INSTANCE_CONNECTION_NAME come stringa di connessione per identificare un'istanza Cloud SQL. Puoi trovare INSTANCE_CONNECTION_NAME nella pagina Panoramica relativa alla tua istanza in Google Cloud Console o eseguendo il seguente comando:

gcloud sql instances describe INSTANCE_NAME
.

Ad esempio: myproject:myregion:myinstance.

A seconda del linguaggio e dell'ambiente, puoi avviare il proxy Cloud SQL Auth utilizzando i 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 dei socket TCP

docker run -d \\
  -v PATH_TO_KEY_FILE:/config \\
  -p 127.0.0.1:3306:3306 \\
  gcr.io/cloudsql-docker/gce-proxy:1.31.0 /cloud_sql_proxy \\
  -instances=INSTANCE_CONNECTION_NAME=tcp:0.0.0.0:3306 -credential_file=/config

Se utilizzi le credenziali fornite dall'istanza di Compute Engine, non includere il parametro credential_file e la riga -v PATH_TO_KEY_FILE:/config.

Specifica sempre il prefisso 127.0.0.1 in -p in modo che il proxy Cloud SQL Auth non sia esposto all'esterno dell'host locale. Il parametro "#0.0.0.0" nelle istanze è necessario per rendere la porta accessibile dall'esterno del container Docker.

Utilizzo dei socket Unix

docker run -d -v /cloudsql:/cloudsql \\
  -v PATH_TO_KEY_FILE:/config \\
  gcr.io/cloudsql-docker/gce-proxy:1.31.0 /cloud_sql_proxy -dir=/cloudsql \\
  -instances=INSTANCE_CONNECTION_NAME -credential_file=/config

Se utilizzi le credenziali fornite dall'istanza di Compute Engine, non includere il parametro credential_file e la riga -v PATH_TO_KEY_FILE:/config.

Se usi 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 i metadati di Compute Engine per determinare in modo dinamico le istanze a cui connetterti. Scopri di più sui parametri del proxy Cloud SQL Auth.

7. Avvia la sessione mysql.

La stringa di connessione utilizzata dipende dal fatto che tu abbia avviato il proxy Cloud SQL Auth utilizzando un socket TCP, un socket UNIX o Docker.

Prese 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 Cloud SQL Auth tramite 127.0.0.1.

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

Utilizzo dei 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 informazioni su come risolvere i problemi del proxy, consulta Risoluzione dei problemi di connessione al proxy Cloud SQL Auth o visita la nostra pagina di assistenza Cloud SQL.

Passaggi successivi