Connetti da Compute Engine

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

Puoi utilizzare un IP privato, un 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 collegata a Cloud SQL, consulta la guida introduttiva per la connessione da Compute Engine.

Prima di iniziare

Questa attività non include istruzioni per la configurazione dell'istanza 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 configurare l'accesso ai servizi privati per il tuo ambiente e l'istanza Cloud SQL deve essere configurata per utilizzare l'IP privato. L'istanza Compute Engine deve trovarsi nella stessa regione dell'istanza Cloud SQL e nella rete configurata per una connessione privata. Scopri di più.

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

Segui le istruzioni riportate in Configurazione della connettività IP privato.

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

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

Se la tua istanza 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 ulteriori informazioni su SELinux per RHEL, consulta la documentazione di RHEL. Per ulteriori informazioni 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 Community Server per la tua piattaforma dalla pagina di download di MySQL Community Server.
    Il server della community include il client MySQL.
  2. Installa Community Server 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 o eseguendo il seguente gcloud comando:

gcloud sql instances list

IP pubblico

Per connetterti utilizzando l'IP pubblico:


Per seguire le indicazioni 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 Compute Engine, se non ne ha già uno.

Non puoi connetterti a Compute Engine utilizzando IPv6. Per informazioni su come aggiungere un indirizzo IP statico, consulta la sezione 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 Configurazione dell'accesso per connessioni IP pubbliche.

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

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

Se la tua istanza 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 ulteriori informazioni su SELinux per RHEL, consulta la documentazione di RHEL. Per ulteriori informazioni 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 Community Server per la tua piattaforma dalla pagina di download di MySQL Community Server.
    Il server della community include il client MySQL.
  2. Installa Community Server 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 come effettuare la connessione utilizzando SSL, consulta 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 la sezione Comunicazione tra le istanze e internet nella documentazione di Compute Engine.

Le connessioni vengono mantenute attive automaticamente per le istanze.

Proxy di autenticazione Cloud SQL

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

1. Abilita l'API Cloud SQL Admin.

Enable the 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 seleziona uno dei seguenti ruoli:
    • Cloud SQL > Client Cloud SQL
    • Cloud SQL > Cloud SQL Editor
    • Cloud SQL > Amministratore Cloud SQL
  7. Fai clic su Fine per completare la creazione dell'account di servizio.
  8. Fai clic sul menu di azioni del nuovo account di servizio e seleziona Gestisci chiavi.
  9. Fai clic sul menu a discesa Aggiungi chiave, 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 sulla tua macchina. Puoi spostarlo in un'altra posizione. Tieni al sicuro il file della chiave.

Se l'istanza Compute Engine si trova in un progetto diverso dall'istanza Cloud SQL, assicurati che il relativo account di servizio disponga delle autorizzazioni appropriate 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 all'istanza Compute Engine.
  3. Seleziona l'istanza Compute Engine per visualizzarne le proprietà.
  4. Nelle proprietà dell'istanza Compute Engine, copia il nome dell'account di servizio.
  5. Vai alla pagina Progetti IAM e amministrazione 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 dispone di un ruolo che include l'autorizzazione cloudsql.instances.connect, puoi procedere al passaggio 4.

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

  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 (è possibile utilizzare qualsiasi ruolo predefinito Cloud SQL diverso da Visualizzatore).

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

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

  11. Fai clic su Aggiungi.

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

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

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

Se la tua istanza 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 ulteriori informazioni su SELinux per RHEL, consulta la documentazione di RHEL. Per ulteriori informazioni 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 Community Server per la tua piattaforma dalla pagina di download di MySQL Community Server.
    Il server della community include il client MySQL.
  2. Installa Community Server 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 nell'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.14.1/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.14.1/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.14.1/cloud-sql-proxy.x64.exe e seleziona Salva link come per scaricare il proxy di autenticazione Cloud SQL. Rinomina il file in 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.14.1/cloud-sql-proxy.x86.exe e seleziona Salva link come per scaricare il proxy di autenticazione Cloud SQL. Rinomina il file in cloud-sql-proxy.exe.

Immagine Docker del proxy di autenticazione Cloud SQL

Il proxy di autenticazione Cloud SQL ha diverse immagini contenitore, ad esempio distroless, alpine e buster. L'immagine del contenitore del proxy di autenticazione Cloud SQL predefinita utilizza distroless, che non contiene shell. Se hai bisogno di una shell o di strumenti correlati, scarica un'immagine basata su alpine o buster. Per ulteriori informazioni, consulta Immagini del contenitore del 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.14.1

Altro sistema operativo

Per altri sistemi operativi non inclusi qui, puoi compilare il proxy di autenticazione Cloud SQL dal codice sorgente.

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 file binario del proxy di autenticazione Cloud SQL si connette a una o più istanze Cloud SQL specificate sulla riga di comando e apre una connessione locale come TCP o una socket Unix. Altre applicazioni e altri servizi, come il codice dell'applicazione o gli strumenti client per la gestione del 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 rimane in ascolto su localhost(127.0.0.1) per impostazione predefinita. Pertanto, quando specifichi --port PORT_NUMBER per un'istanza, la connessione locale è in 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 ascolti sulla porta 0.0.0.0:1234 per la connessione locale:

./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 della tua istanza nella console Google Cloud o eseguendo il seguente comando:

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

    Ad esempio: myproject:myregion:myinstance.

  2. Se per l'istanza sono configurati sia l'IP pubblico che quello privato e vuoi che il proxy di autenticazione Cloud SQL utilizzi 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, annota la posizione sul computer client del file della chiave privata creato quando hai creato l'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 Cloud SDK:
      ./cloud-sql-proxy --port 3306 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 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 ulteriori informazioni sulle opzioni del proxy di autenticazione Cloud SQL, consulta Opzioni per l'autenticazione del proxy di autenticazione Cloud SQL.

Socket Unix

Il proxy di autenticazione Cloud SQL può ascoltare su un socket Unix, che è un meccanismo standard Posix per l'utilizzo di una cartella per gestire la comunicazione tra due processi in esecuzione sullo stesso host. I vantaggi dell'utilizzo delle prese Unix sono una maggiore sicurezza e una latenza inferiore, ma non puoi accedere a una presa Unix da una macchina esterna.

Per creare e utilizzare un socket Unix, la directory di destinazione deve esistere e sia Cloud SQL Auth Proxy sia l'applicazione devono disporre dell'accesso in lettura e scrittura.

  1. Copia il tuo INSTANCE_CONNECTION_NAME. Puoi trovarlo nella pagina Panoramica della tua istanza nella console Google Cloud o eseguendo il seguente comando:

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

    Ad esempio: myproject:myregion:myinstance.

  2. Crea la directory in cui verranno memorizzati i socket del 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, annota la posizione sul computer client del file della chiave privata creato quando hai creato l'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 dell'autenticazione di Google Cloud SDK:
      ./cloud-sql-proxy --unix-socket /cloudsql INSTANCE_CONNECTION_NAME &
    • Utilizzo di un account di servizio:
        ./cloud-sql-proxy --unix-socket /cloudsql
        --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &

    Avvia il proxy di autenticazione Cloud SQL nel proprio terminale Cloud Shell per poterne monitorare l'output senza che si confonda con l'output di altri programmi.

    Per ulteriori informazioni sulle opzioni del proxy di autenticazione Cloud SQL, consulta Opzioni per l'autenticazione del proxy di autenticazione Cloud SQL.

Docker

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

Puoi avviare il proxy di autenticazione Cloud SQL utilizzando socket TCP o socket Unix con i comandi riportati di seguito. Le opzioni utilizzano un INSTANCE_CONNECTION_NAME come la stringa di connessione per identificare un'istanza Cloud SQL. Puoi trovare il valore INSTANCE_CONNECTION_NAME nella pagina Panoramica della tua istanza nella console Google Cloud 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 di autenticazione Cloud SQL utilizzando socket TCP o socket Unix. Le prese Unix non sono supportate 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.14.1 \\
  --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 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 exposto al di fuori dell'host locale. Il valore "0.0.0.0" nel parametro instances è 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:/path/to/service-account-key.json \\
  gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.14.1 --unix-socket=/cloudsql \\
  --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME

Se utilizzi le credenziali fornite dall'istanza 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 ottimizzata per i container, utilizza 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 dinamicamente 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 dipende dal fatto che tu abbia avviato il proxy di autenticazione Cloud SQL utilizzando un socket TCP o un socket UNIX o Docker.

Socket TCP

  1. Avvia il client mysql:
    mysql -u USERNAME -p --host 127.0.0.1
    Se ti connetti a un'istanza MySQL 8.4, utilizza il seguente comando:
    mysql -u USERNAME -p --host 127.0.0.1 --get-server-public-key

    Quando ti connetti utilizzando le socket TCP, accedi a Cloud SQL Auth Proxy 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

    Nota: non puoi utilizzare il proxy di autenticazione Cloud SQL tramite una connessione socket UNIX a un'istanza MySQL 8.4.

  2. Inserisci la password.
  3. Viene visualizzato il prompt mysql.

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

Passaggi successivi