In questa pagina viene descritto come utilizzare il client psql, installato su un'istanza Compute Engine, per connettersi 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 dettagliate sull'esecuzione di un'applicazione web di esempio di Compute Engine collegata a Cloud SQL, consulta la guida rapida per la connessione da Compute Engine.
Prima di iniziare
Questa attività non include istruzioni per configurare l'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 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. L'istanza Compute Engine deve trovarsi nella stessa regione dell'istanza Cloud SQL e sulla rete configurata per una connessione privata. Ulteriori informazioni
1. Configura l'istanza per l'utilizzo dell'IP privato
Segui le istruzioni in Configurare la connettività IP privato.
2. Apri una connessione del terminale Cloud Shell all'istanza di Compute Engine.
Utilizza le istruzioni appropriate, a seconda del sistema operativo dell'istanza:
- Per Linux, consulta la pagina Connessione alle VM Linux.
- Per Windows, consulta la pagina relativa alla connessione alle VM Windows.
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 psql sull'istanza Compute Engine, se non è già installato.
Debian/Ubuntu
Installa il client psql dal gestore di pacchetti:
sudo apt-get update sudo apt-get install postgresql-client
CentOS/RHEL
Installa il client psql dal gestore di pacchetti:
sudo yum install postgresql
openSUSE
Installa il client psql dal gestore di pacchetti:
sudo zypper install postgresql
Altre piattaforme
- Scarica PostgreSQL Core Distribution per la tua piattaforma dalla pagina dei download di PostgreSQL.
La distribuzione principale include il client psql. - Installa il database PostgreSQL seguendo le istruzioni riportate nella pagina di download.
4. Connettiti al client psql.
psql -h CLOUD_SQL_PRIVATE_IP_ADDRESS -U USERNAME
Puoi trovare l'indirizzo IP privato nella
pagina delle istanze Cloud SQL o eseguendo questo
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 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 alla tua istanza Cloud SQL.
Per maggiori informazioni, consulta Configurazione dell'accesso per connessioni IP pubbliche.
3. Apri una connessione del terminale Cloud Shell all'istanza di Compute Engine.
Utilizza le istruzioni appropriate, a seconda del sistema operativo dell'istanza:
- Per Linux, consulta la pagina Connessione alle VM Linux.
- Per Windows, consulta la pagina relativa alla connessione alle VM Windows.
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 psql sull'istanza Compute Engine, se non è già installato.
Debian/Ubuntu
Installa il client psql dal gestore di pacchetti:
sudo apt-get update sudo apt-get install postgresql-client
CentOS/RHEL
Installa il client psql dal gestore di pacchetti:
sudo yum install postgresql
openSUSE
Installa il client psql dal gestore di pacchetti:
sudo zypper install postgresql
Altre piattaforme
- Scarica PostgreSQL Core Distribution per la tua piattaforma dalla pagina dei download di PostgreSQL.
La distribuzione principale include il client psql. - Installa il database PostgreSQL seguendo le istruzioni riportate nella pagina di download.
5. Connettiti al client psql.
psql -h CLOUD_SQL_PUBLIC_IP_ADDR -U USERNAME
Puoi trovare l'indirizzo IP pubblico nella
pagina delle istanze Cloud SQL o eseguendo questo
comando gcloud
:
gcloud sql instances list
Per un esempio di come stabilire una connessione tramite SSL, consulta Connessione tramite SSL.
6. Viene visualizzato il prompt psql.
7. Se hai bisogno di mantenere attive le connessioni inutilizzate:
Imposta il keepalive TCP.
Per ulteriori informazioni, consulta Comunicazione tra 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.
2. Crea un account di servizio.
- Nella console Google Cloud, vai alla pagina Account di servizio.
- Seleziona il progetto che contiene l'istanza Cloud SQL.
- Fai clic su Crea account di servizio.
- Nel campo Nome account di servizio, inserisci un nome descrittivo per l'account di servizio.
- Modifica l'ID account di servizio impostando un valore univoco e riconoscibile, quindi fai clic su Crea e continua.
-
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
- Fai clic su Fine per completare la creazione dell'account di servizio.
- Fai clic sul menu Azioni per il nuovo account di servizio e seleziona Gestisci chiavi.
- Fai clic sul menu a discesa Aggiungi chiave e quindi su Crea nuova chiave.
-
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 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 l'account di servizio disponga delle autorizzazioni appropriate nel progetto che contiene l'istanza Cloud SQL:
- Vai all'elenco delle istanze Compute Engine nella console Google Cloud.
- Se necessario, seleziona il progetto associato all'istanza Compute Engine.
- Seleziona l'istanza Compute Engine per visualizzarne le proprietà.
- Nelle proprietà dell'istanza Compute Engine, copia il nome dell'account di servizio.
- Vai alla pagina Progetti IAM e amministratore nella console Google Cloud.
- Seleziona il progetto che contiene l'istanza di Cloud SQL.
- Cerca il nome dell'account di servizio.
-
Se l'account di servizio è già presente e ha un ruolo che include l'autorizzazione
cloudsql.instances.connect
, puoi andare al passaggio 4.I ruoli
Cloud SQL Client
,Cloud SQL Editor
eCloud SQL Admin
forniscono tutti l'autorizzazione necessaria, così come i ruoli legacy di progettoEditor
eOwner
. - In caso contrario, aggiungi l'account di servizio facendo clic su Aggiungi.
Nella finestra di dialogo Aggiungi entità, specifica il nome dell'account di servizio e seleziona un ruolo che includa l'autorizzazione
cloudsql.instances.connect
(funziona 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 dell'autorizzazione
resourcemanager.projects.setIamPolicy
. Per controllare le tue autorizzazioni, vai alla pagina IAM nella console Google Cloud e cerca il tuo ID utente.- Fai clic su Aggiungi.
Ora vedrai l'account di servizio elencato con il ruolo specificato.
3. Apri una connessione del terminale all'istanza Compute Engine.
Utilizza le istruzioni appropriate, a seconda del sistema operativo dell'istanza:
- Per Linux, consulta la pagina relativa alla connessione a istanze Linux.
- Per Windows, consulta la sezione Connessione a istanze Windows.
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 psql sull'istanza Compute Engine, se non è già installato.
Debian/Ubuntu
Installa il client psql dal gestore di pacchetti:
sudo apt-get update sudo apt-get install postgresql-client
CentOS/RHEL
Installa il client psql dal gestore di pacchetti:
sudo yum install postgresql
openSUSE
Installa il client psql dal gestore di pacchetti:
sudo zypper install postgresql
Altre piattaforme
- Scarica PostgreSQL Core Distribution per la tua piattaforma dalla pagina dei download di PostgreSQL.
La distribuzione principale include il client psql. - Installa il database PostgreSQL seguendo le istruzioni riportate nella pagina di download.
5. Installa il proxy di autenticazione Cloud SQL sull'istanza Compute Engine.
Linux a 64 bit
- 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
- Rendi eseguibile il proxy di autenticazione Cloud SQL:
chmod +x cloud-sql-proxy
Linux a 32 bit
- 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
- Se il comando
curl
non viene trovato, eseguisudo apt install curl
e ripeti il comando di download. - 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.11.4/cloud-sql-proxy.x64.exe e seleziona Salva link con nome per scaricare il proxy di autenticazione Cloud SQL. Rinomina il file comecloud-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.11.4/cloud-sql-proxy.x86.exe e seleziona Salva link con nome per scaricare il proxy di autenticazione Cloud SQL. Rinomina il file comecloud-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 del 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, consulta
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.
A seconda del linguaggio e dell'ambiente, puoi avviare il proxy di autenticazione Cloud SQL utilizzando socket TCP, socket Unix o l'immagine Docker proxy di autenticazione Cloud SQL. Il programma 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 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 le 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, se specifichi --port PORT_NUMBER
per un'istanza, la connessione locale
si trova all'indirizzo 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 in 0.0.0.0:1234
:
./cloud-sql-proxy --address 0.0.0.0 --port 1234 INSTANCE_CONNECTION_NAME
Copia il tuo INSTANCE_CONNECTION_NAME. Puoi trovarlo nella pagina Panoramica dell'istanza nella console Google Cloud oppure eseguendo questo comando:
gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'
Ad esempio: myproject:myregion:myinstance.
- Se per l'istanza sono configurati indirizzi IP sia pubblici che privati 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
- 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 dell'account di servizio.
- 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 5432 INSTANCE_CONNECTION_NAME
La porta specificata non deve essere già utilizzata, ad esempio da un server di database locale. - Utilizzando un account di servizio e includendo esplicitamente il nome della connessione dell'istanza
(opzione consigliata per gli 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.
- Utilizzo dell'autenticazione di Cloud SDK:
Socket Unix
Il proxy di autenticazione Cloud SQL può rimanere in ascolto su un socket Unix, 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 dei socket Unix includono una maggiore sicurezza e una minore latenza. Tuttavia, non è possibile accedere a un socket Unix da una macchina esterna.
Per creare e utilizzare un socket Unix, deve esistere la directory di destinazione e sia il proxy di autenticazione Cloud SQL sia l'applicazione devono disporre dell'accesso in lettura e scrittura.
Copia il tuo INSTANCE_CONNECTION_NAME. Puoi trovarlo nella pagina Panoramica dell'istanza nella console Google Cloud oppure eseguendo questo comando:
gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'
Ad esempio: myproject:myregion:myinstance.
- Crea la directory in cui si troveranno i socket del proxy di autenticazione Cloud SQL:
sudo mkdir /cloudsql; sudo chmod 777 /cloudsql
- 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 dell'account di servizio.
- 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 &
- Con 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 relativo terminale Cloud Shell in modo da poter monitorare l'output senza che si mischi con quello di altri programmi.
Per saperne di più sulle opzioni del proxy di autenticazione Cloud SQL, consulta Opzioni per l'autenticazione del proxy di autenticazione Cloud SQL.
- Utilizzo dell'autenticazione di Google Cloud SDK:
Docker
Per eseguire il proxy di autenticazione Cloud SQL in un container Docker, utilizza l'immagine Docker del 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 i comandi mostrati 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 dell'istanza della 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 socket 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:5432:5432 \\ gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.11.4 \\ --address 0.0.0.0 --port 5432 \\ --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME
Se utilizzi le credenziali fornite dalla tua 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 esposto all'esterno dell'host locale. È richiesto "0.0.0.0" nel parametro instances
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.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 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, 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 psql.
La stringa di connessione che utilizzi dipende dal fatto che il proxy di autenticazione Cloud SQL sia stato avviato tramite un socket TCP, un socket UNIX o Docker.
socket TCP
- Avvia il client psql:
psql "host=127.0.0.1 sslmode=disable dbname=DB_NAME user=USERNAME"
Anche se il parametro
sslmode
è impostato sudisable
, il proxy di autenticazione Cloud SQL fornisce una connessione criptata.Quando ti connetti utilizzando socket TCP, il proxy di autenticazione Cloud SQL è accessibile tramite
127.0.0.1
. - Se richiesto, inserisci la password.
- Viene visualizzato il prompt psql.
Utilizzo di socket Unix
- Avvia il client psql:
psql "sslmode=disable host=/cloudsql/INSTANCE_CONNECTION_NAME dbname=DB_NAME user=USERNAME"
Anche se il parametro
sslmode
è impostato sudisable
, il proxy di autenticazione Cloud SQL fornisce una connessione criptata. - Inserisci la password.
- Viene visualizzato il prompt psql.
Serve aiuto? Per assistenza nella risoluzione dei problemi relativi al proxy, consulta Risoluzione dei problemi di connessioni al proxy di autenticazione Cloud SQL o la nostra pagina di assistenza di Cloud SQL.
Passaggi successivi
- Ricevi assistenza per la risoluzione dei problemi di connessione per il proxy di autenticazione Cloud SQL.
- Crea utenti e database.
- Scopri di più sull'IP privato.
- Scopri di più sulle opzioni per la connessione all'istanza dall'applicazione.
- Scopri di più sul client psql.
- Scopri le opzioni di assistenza.