Questa pagina descrive come attivare e utilizzare l'autenticazione integrata di Cloud SQL.
Per una panoramica, consulta Autenticazione dei database integrata di Cloud SQL.Prima di creare gli utenti
- Crea un'istanza Cloud SQL. Per ulteriori informazioni, consulta Creare istanze.
- Abilita i criteri per le password per l'istanza. Per ulteriori informazioni, consulta Criteri per le password delle istanze.
Se prevedi di utilizzare il client amministrativo del database per gestire gli utenti, esegui i seguenti passaggi:
Connetti il client all'istanza. Vedi Opzioni di connessione per applicazioni esterne.
Configura l'utente predefinito nell'istanza impostando la password. Vedi Impostare la password per l'account utente predefinito.
Impostare la password per l'account utente predefinito
Quando crei una nuova istanza Cloud SQL, devi impostare una password per l'account utente predefinito prima di poterti connettere all'istanza.
Per Cloud SQL per MySQL, l'utente predefinito èroot@%
. Si tratta di un utente del database con un nome utente root
che può connettersi da qualsiasi host (@%
).
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
- Seleziona Utenti dal menu di navigazione SQL.
- Individua l'utente
root
e seleziona Cambia password dal menu Altre azioni .Tieni conto delle limitazioni elencate per la password, che derivano dal criterio relativo alla password impostato per l'istanza.
- Fornisci una password efficace che puoi ricordare e fai clic su OK.
gcloud
Utilizza il comando
gcloud sql users set-password
come segue per impostare la password per l'utente predefinito.
Sostituisci INSTANCE_NAME con il nome dell'istanza prima di eseguire il comando.
gcloud sql users set-password root \ --host=% \ --instance=INSTANCE_NAME \ --prompt-for-password
REST v1
Per aggiornare la password dell'account utente predefinito, utilizza una richiesta PUT con il metodo users:update.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: il tuo ID progetto
- instance-id: l'ID istanza desiderato
- password: la password dell'utente
Metodo HTTP e URL:
PUT https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?name=root&host=%25
Corpo JSON della richiesta:
{ "name": "root", "password": "password" }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "UPDATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
REST v1beta4
Per aggiornare la password dell'account utente predefinito, utilizza una richiesta PUT con il metodo users:update.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: il tuo ID progetto
- instance-id: l'ID istanza desiderato
- password: la password dell'utente
Metodo HTTP e URL:
PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?name=root&host=%25
Corpo JSON della richiesta:
{ "name": "root", "password": "password" }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "UPDATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Crea un utente
Dopo aver configurato l'account utente predefinito, puoi creare altri utenti.
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
- Seleziona Utenti dal menu di navigazione SQL.
- Fai clic su Aggiungi account utente.
Nella pagina Aggiungi un account utente all'istanza instance_name, puoi scegliere se l'utente deve autenticarsi con il metodo del database integrato (nome utente e password) o come utente IAM.
- Seleziona Autenticazione integrata (il valore predefinito) e aggiungi le seguenti informazioni:
- Un nome utente.
- Facoltativo. Una password. Fornisci una password efficace che puoi ricordare.
- Facoltativo. I criteri relativi alle password utente.
- Nella sezione Nome host, il valore predefinito è Consenti qualsiasi host, il che significa che l'utente può connettersi da qualsiasi indirizzo IP. Se vuoi, seleziona Limita l'host per indirizzo IP o intervallo di indirizzi e inserisci un indirizzo IP o un intervallo di indirizzi nella sezione Host. L'utente potrà quindi connettersi solo dall'indirizzo IP o dagli indirizzi IP specificati.
- Fai clic su Aggiungi.
Agli utenti creati nelle istanze che utilizzano MySQL 8.0 o versioni successive e il metodo di autenticazione di Cloud SQL viene assegnato automaticamente il ruolo cloudsqlsuperuser
e sono associati i seguenti privilegi: CREATEROLE
, CREATEDB
e LOGIN
.
Agli utenti creati nelle istanze che utilizzano MySQL 5.7 e il metodo di autenticazione di Cloud SQL vengono concessi automaticamente tutti i privilegi, ad eccezione di FILE
e SUPER
. Se devi modificare i privilegi per questi utenti, utilizza il comando GRANT o REVOKE nel client mysql
.
Per ulteriori informazioni su questi account utente e privilegi, consulta Altre account utente MySQL.
gcloud
Per creare un utente, utilizza il comando
gcloud sql users create
.
Sostituisci quanto segue:
- USER_NAME: il nome utente.
- HOST: il nome host dell'utente come indirizzo IP specifico, intervallo di indirizzi o qualsiasi host (
%
). - INSTANCE_NAME: il nome dell'istanza.
- PASSWORD: la password dell'utente.
gcloud sql users create USER_NAME \ --host=HOST \ --instance=INSTANCE_NAME \ --password=PASSWORD
Agli utenti creati nelle istanze che utilizzano MySQL 8.0 o versioni successive e il metodo di autenticazione di Cloud SQL viene assegnato automaticamente il ruolo cloudsqlsuperuser
e sono associati i seguenti privilegi: CREATEROLE
, CREATEDB
e LOGIN
.
Agli utenti creati nelle istanze che utilizzano MySQL 5.7 e il metodo di autenticazione di Cloud SQL vengono concessi automaticamente tutti i privilegi, ad eccezione di FILE
e SUPER
. Se devi modificare i privilegi per questi utenti, utilizza il comando GRANT o REVOKE nel client mysql
.
Per ulteriori informazioni su questi account utente e privilegi, consulta Altre account utente MySQL.
I limiti di lunghezza del nome utente sono gli stessi per Cloud SQL e per MySQL on-premise: 32 caratteri per MySQL 8.0 e versioni successive, 16 caratteri per le versioni precedenti.
Quando crei un utente, puoi aggiungere i parametri dei criteri per le password degli utenti.
Terraform
Per creare un utente, utilizza una risorsa Terraform.
Applica le modifiche
Per applicare la configurazione Terraform in un progetto Google Cloud, completa i passaggi nelle seguenti sezioni.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito in cui vuoi applicare le configurazioni Terraform.
Devi eseguire questo comando una sola volta per progetto e puoi farlo in qualsiasi directory.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Le variabili di ambiente vengono sostituite se imposti valori espliciti nel file di configurazione Terraform.
Prepara la directory
Ogni file di configurazione di Terraform deve avere una propria directory (chiamata anche modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
file al suo interno. Il nome file deve avere l'estensione
.tf
, ad esempiomain.tf
. In questo tutorial, il file è denominatomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice campione nel file
main.tf
appena creato.Se vuoi, copia il codice da GitHub. Questa opzione è consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.
- Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
terraform init
Se vuoi, per utilizzare la versione più recente del provider Google, includi l'opzione
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform sta per creare o
aggiornare corrispondano alle tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione di Terraform eseguendo il seguente comando e inserendo
yes
al prompt:terraform apply
Attendi che Terraform mostri il messaggio "Applicazione completata".
- Apri il tuo progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.
Elimina le modifiche
Per eliminare le modifiche, procedi nel seguente modo:
- Per disattivare la protezione dall'eliminazione, imposta
l'argomento
deletion_protection
sufalse
nel file di configurazione Terraform.deletion_protection = "false"
- Applica la configurazione Terraform aggiornata eseguendo il seguente comando e inserendo
yes
al prompt:terraform apply
-
Rimuovi le risorse applicate in precedenza con la configurazione Terraform eseguendo il seguente comando e inserendo
yes
al prompt:terraform destroy
REST v1
Per creare un utente, utilizza una richiesta POST con il metodo users:insert.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: il tuo ID progetto
- instance-id: l'ID istanza desiderato
- user-id: l'ID dell'utente
- password: la password dell'utente
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users
Corpo JSON della richiesta:
{ "name": "user-id", "password": "password" }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:44:16.656Z", "startTime": "2020-02-07T22:44:16.686Z", "endTime": "2020-02-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Agli utenti creati nelle istanze che utilizzano MySQL 8.0 o versioni successive e il metodo di autenticazione di Cloud SQL viene assegnato automaticamente il ruolo cloudsqlsuperuser
e sono associati i seguenti privilegi: CREATEROLE
, CREATEDB
e LOGIN
.
Agli utenti creati nelle istanze che utilizzano MySQL 5.7 e il metodo di autenticazione di Cloud SQL vengono concessi automaticamente tutti i privilegi, ad eccezione di FILE
e SUPER
. Se devi modificare i privilegi per questi utenti, utilizza il comando GRANT o REVOKE nel client mysql
.
Per ulteriori informazioni su questi account utente e privilegi, consulta Altre account utente MySQL.
I limiti di lunghezza del nome utente sono gli stessi per Cloud SQL e per MySQL on-premise: 32 caratteri per MySQL 8.0 e versioni successive, 16 caratteri per le versioni precedenti.
Quando crei un utente, puoi aggiungere i parametri dei criteri per le password degli utenti.
REST v1beta4
Per creare un utente, utilizza una richiesta POST con il metodo users:insert.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: il tuo ID progetto
- instance-id: l'ID istanza desiderato
- user-id: l'ID dell'utente
- password: la password dell'utente
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users
Corpo JSON della richiesta:
{ "name": "user-id", "password": "password" }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:44:16.656Z", "startTime": "2020-02-07T22:44:16.686Z", "endTime": "2020-02-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Agli utenti creati nelle istanze che utilizzano MySQL 8.0 o versioni successive e il metodo di autenticazione di Cloud SQL viene assegnato automaticamente il ruolo cloudsqlsuperuser
e sono associati i seguenti privilegi: CREATEROLE
, CREATEDB
e LOGIN
.
Agli utenti creati nelle istanze che utilizzano MySQL 5.7 e il metodo di autenticazione di Cloud SQL vengono concessi automaticamente tutti i privilegi, ad eccezione di FILE
e SUPER
. Se devi modificare i privilegi per questi utenti, utilizza il comando GRANT o REVOKE nel client mysql
.
Per ulteriori informazioni su questi account utente e privilegi, consulta Altre account utente MySQL.
I limiti di lunghezza del nome utente sono gli stessi per Cloud SQL e per MySQL on-premise: 32 caratteri per MySQL 8.0 e versioni successive, 16 caratteri per le versioni precedenti.
Quando crei un utente, puoi aggiungere i parametri dei criteri per le password degli utenti.
Client mysql
- Per creare un utente, al prompt
mysql
, utilizza la seguente istruzione CREATE USER:CREATE USER 'USER_NAME'@'%' IDENTIFIED BY 'PASSWORD';
Se vuoi, aggiungi i parametri dei criteri relativi alle password utente.
- Puoi confermare la creazione dell'utente visualizzando la tabella degli utenti:
Per un'istanza di seconda generazione, l'output è simile a questo esempio:SELECT user, host FROM mysql.user;
+----------+-----------+ | user | host | +----------+-----------+ | root | % | | newuser | % | +----------+-----------+ 1 row in set (0.01 sec)
- Concedi all'utente i privilegi con l'istruzione
GRANT
. Per ulteriori informazioni, consulta Privilegi forniti da MySQL. -
Svuota la tabella
mysql.user
per assicurarti che la modifica persista:FLUSH TABLES mysql.user;
Impostare un criterio per le password utente
Puoi impostare un criterio per le password con il tipo di autenticazione integrato.
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
- Seleziona Utenti dal menu di navigazione SQL.
- Fai clic su Altre azioni per l'utente di cui vuoi modificare i criteri.
- Seleziona Modifica criterio password.
- Nella sezione Criteri per le password, seleziona una o più delle seguenti opzioni:
- Imposta la scadenza della password: specifica il numero di giorni dopo i quali la password scade e l'utente deve crearne una nuova.
- Blocca dopo tentativi non riusciti: specifica il numero di volte in cui un utente può provare a inserire la password in modo errato prima che l'account venga bloccato.
Supportato solo su Cloud SQL per MySQL 8.0 e versioni successive.
- Richiedi password attuale quando viene modificata la password: richiede agli utenti di inserire la password esistente quando tentano di modificarla.
gcloud
Per impostare il criterio relativo alla password utente, utilizza il comando
gcloud sql users set-password-policy
.
Utilizza --password-policy-enable-password-verification
per rendere obbligatorio per gli utenti inserire la password esistente quando tentano di cambiarla. Per disattivare questo parametro, utilizza --no-password-policy-enable-password-verification
.
Sostituisci quanto segue:
- USER_NAME: il nome utente.
- INSTANCE_NAME: il nome dell'istanza.
- HOST: il nome host dell'utente come indirizzo IP specifico, intervallo di indirizzi o qualsiasi host (
%
). - PASSWORD_POLICY_ALLOWED_FAILED_ATTEMPTS: facoltativo. Il numero di volte che un utente può provare la password in modo errato prima che l'account venga bloccato. Utilizza
--password-policy-enable-failed-attempts-check
per attivare e--no-password-policy-enable-failed-attempts-check
per disattivare il controllo. - PASSWORD_POLICY_PASSWORD_EXPIRATION_DURATION: facoltativo: specifica il numero di giorni dopo i quali la password scade e l'utente deve crearne una nuova.
gcloud sql users set-password-policy USER_NAME \ --instance=INSTANCE_NAME \ --host=HOST \ --password-policy-enable-failed-attempts-check \ --password-policy-allowed-failed-attempts=PASSWORD_POLICY_ALLOWED_FAILED_ATTEMPTS \ --password-policy-password-expiration-duration=PASSWORD_POLICY_PASSWORD_EXPIRATION_DURATION \ --password-policy-enable-password-verification
Per rimuovere un criterio per le password degli utenti, utilizza il parametro --clear-password-policy
.
gcloud sql users set-password-policy USER_NAME \ --instance=INSTANCE_NAME \ --host=HOST \ --clear-password-policy
Per visualizzare i criteri relativi alle password degli utenti, consulta Enumerare gli utenti.
REST v1
Per impostare un criterio relativo alla password dell'utente, utilizza una richiesta PUT con il metodo users:update.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto
- INSTANCE_ID: l'ID istanza
- USER_ID: l'ID dell'utente
- PASSWORD: la password dell'utente
- FAILED_ATTEMPTS_CHECK: impostato su
true
per attivare un controllo del numero di tentativi di accesso non riusciti al termine dei quali l'account viene bloccato - NUMBER_OF_ATTEMPTS: il numero di tentativi di accesso non riusciti dopo i quali l'account viene bloccato
- PASSWORD_EXPIRATION_DURATION: il numero di giorni dopo i quali la password scade e l'utente deve crearne una nuova
- VERIFY_PASSWORD: impostato su
true
per rendere obbligatorio per gli utenti inserire la password esistente quando tentano di modificarla
Metodo HTTP e URL:
PUT https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID
Corpo JSON della richiesta:
{ "name": "USER_ID", "password": "PASSWORD", "data": { "passwordValidationUserPolicy" : { { "enableFailedAttemptsCheck" : "FAILED_ATTEMPTS_CHECK", "allowedFailedAttempts" : "NUMBER_OF_ATTEMPTS", "passwordExpirationDuration" : "PASSWORD_EXPIRATION_DURATION", "enablePasswordVerification" : "VERIFY_PASSWORD" } }, } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Per visualizzare i criteri relativi alle password degli utenti, consulta Enumerare gli utenti.
REST v1beta4
Per impostare un criterio relativo alla password dell'utente, utilizza una richiesta PUT con il metodo users:update.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto
- INSTANCE_ID: l'ID istanza
- USER_ID: l'ID dell'utente
- PASSWORD: la password dell'utente
- FAILED_ATTEMPTS_CHECK: impostato su
true
per attivare un controllo del numero di tentativi di accesso non riusciti al termine dei quali l'account viene bloccato - NUMBER_OF_ATTEMPTS: il numero di tentativi di accesso non riusciti dopo i quali l'account viene bloccato
- PASSWORD_EXPIRATION_DURATION: il numero di giorni dopo i quali la password scade e l'utente deve crearne una nuova
- VERIFY_PASSWORD: impostato su
true
per rendere obbligatorio per gli utenti inserire la password esistente quando tentano di modificarla
Metodo HTTP e URL:
PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID
Corpo JSON della richiesta:
{ "name": "USER_ID", "password": "PASSWORD", "data": { "passwordValidationUserPolicy" : { { "enableFailedAttemptsCheck" : "FAILED_ATTEMPTS_CHECK", "allowedFailedAttempts" : "NUMBER_OF_ATTEMPTS", "passwordExpirationDuration" : "PASSWORD_EXPIRATION_DURATION", "enablePasswordVerification" : "VERIFY_PASSWORD" } }, } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Per visualizzare i criteri relativi alle password degli utenti, consulta Enumerare gli utenti.
Client mysql
Per impostare un criterio per le password degli utenti, al prompt mysql
utilizza la seguente dichiarazione
ALTER USER:
ALTER USER USER_NAME FAILED_LOGIN_ATTEMPTS ALLOWED_FAILED_ATTEMPTS PASSWORD EXPIRE INTERVAL PASSWORD_EXPIRATION_DURATION DAY PASSWORD REQUIRE CURRENT;
Sostituisci quanto segue:
- USER_NAME: il nome utente.
- ALLOWED_FAILED_ATTEMPTS: facoltativo. Il numero di volte che un utente può provare la password in modo errato prima che l'account venga bloccato.
- PASSWORD_EXPIRATION_DURATION: facoltativo: specifica il numero di giorni dopo i quali la password scade e l'utente deve crearne una nuova.
Utilizza l'opzione PASSWORD REQUIRE CURRENT
per rendere obbligatorio per gli utenti inserire la password esistente quando tentano di modificarla.
Per visualizzare i criteri per le password utente, vedi Elenco utenti.
Elenca utenti
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
- Seleziona Utenti dal menu di navigazione SQL.
L'elenco mostra i tipi
User name
,Host name
eAuthentication
per ciascun utente.Inoltre, per il tipo di autenticazione integrata, viene indicato anche il valore
Password status
.
gcloud
Utilizza il comando gcloud sql users list per elencare gli utenti di questa istanza:
gcloud sql users list \ --instance=INSTANCE_NAME
Il comando restituisce Name
, Host
e
Type
di autenticazione per ogni utente.
Inoltre, per il tipo di autenticazione integrato, vengono restituiti lo stato e le impostazioni del criterio di password. Ad esempio:
NAME HOST TYPE PASSWORD_POLICY user1 BUILT_IN {'allowedFailedAttempts': 2, 'enableFailedAttemptsCheck': True, 'passwordExpirationDuration': '7d', 'status': { 'locked': True, 'passwordExpirationTime': '2022-07-01T19:53:45.822742904Z' } }
REST v1
Per elencare gli utenti definiti per un'istanza, utilizza una richiesta GET con il metodo users:list.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: il tuo ID progetto
- instance-id: l'ID istanza desiderato
Metodo HTTP e URL:
GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#usersList", "items": [ { "kind": "sql#user", "etag": "--redacted--", "name": "sqlserver", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { "kind": "sql#user", "etag": "--redacted--", "name": "user-id-1", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { "kind": "sql#user", "etag": "--redacted--", "name": "user-id-2", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { ... }, { ... } ] }
Se è stato impostato un criterio per le password degli utenti, la sezione items
della risposta include una sezione passwordPolicy
. Il seguente esempio di codice mostra la sezione passwordPolicy
.
{ ... "passwordValidationUserPolicy" : { { "enableFailedAttemptsCheck" : true, "allowedFailedAttempts" : 8, "passwordExpirationDuration" : "7d", "enablePasswordVerification" : true } }, ... }
REST v1beta4
Per elencare gli utenti definiti per un'istanza, utilizza una richiesta GET con il metodo users:list.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: il tuo ID progetto
- instance-id: l'ID istanza desiderato
Metodo HTTP e URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#usersList", "items": [ { "kind": "sql#user", "etag": "--redacted--", "name": "sqlserver", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { "kind": "sql#user", "etag": "--redacted--", "name": "user-id-1", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { "kind": "sql#user", "etag": "--redacted--", "name": "user-id-2", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { ... }, { ... } ] }
Se è stato impostato un criterio per le password degli utenti, la sezione items
della risposta include una sezione passwordPolicy
. Il seguente esempio di codice mostra la sezione passwordPolicy
.
{ ... "passwordValidationUserPolicy" : { { "enableFailedAttemptsCheck" : true, "allowedFailedAttempts" : 8, "passwordExpirationDuration" : "7d", "enablePasswordVerification" : true } }, ... }
Client mysql
Per elencare gli utenti MySQL, al prompt mysql
, utilizza la seguente istruzione
SELECT:
SELECT user, host FROM mysql.user;
Per un'istanza di seconda generazione con solo l'account utente root
configurato,
l'output è simile a questo esempio:
+------+-----------+ | user | host | +------+-----------+ | root | % | +------+-----------+ 1 row in set (0.01 sec)
Questo esempio mostra gli utenti di un'istanza con l'utente root
. Questo utente può connettersi da qualsiasi host (%
). Il campo della password mostra l'hash della password.
Modificare la password di un utente
Le password utente possono essere modificate in uno dei seguenti modi.
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
- Seleziona Utenti dal menu di navigazione SQL.
- Fai clic su Altre azioni per l'utente che vuoi aggiornare.
- Seleziona Cambia password.
- Specifica una nuova password.
Inoltre, se vuoi continuare a utilizzare la password precedente, seleziona la casella di controllo Mantieni la password attuale.
- Fai clic su OK.
gcloud
Utilizza il comando
gcloud sql users set-password
per modificare una password.
Sostituisci quanto segue:
- USER_NAME: il nome utente.
- HOST: il nome host dell'utente come indirizzo IP specifico, intervallo di indirizzi o qualsiasi host (
%
). - INSTANCE_NAME: il nome dell'istanza.
- PASSWORD: una password. Deve soddisfare i requisiti dei criteri per le password, se impostati.
Se vuoi, per MySQL 8.0 e versioni successive puoi continuare a consentire all'utente di utilizzare la password precedente con l'opzione --retain-password
. Per ignorare la password precedente, utilizza l'opzione --discard-dual-password
.
gcloud sql users set-password USER_NAME \ --host=HOST \ --instance=INSTANCE_NAME \ --password=PASSWORD
REST v1
Per modificare la password di un utente, utilizza una richiesta PUT con il metodo users:update.
La seguente richiesta aggiorna la password dell'account utente
user_name'@'%
. Se l'utente ha un host diverso, devi modificare la chiamata con l'host corretto.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: il tuo ID progetto
- instance-id: l'ID istanza desiderato
- user-id: l'ID dell'utente
- password: la nuova password dell'utente
- dual-password: uno di questi valori enum:
DUAL_PASSWORD
: l'utente può continuare a utilizzare la password precedente.NO_DUAL_PASSWORD
: l'utente non può utilizzare la password precedente.NO_MODIFY_DUAL_PASSWORD
: lo stato della doppia password rimane invariato.
Metodo HTTP e URL:
PUT https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?name=user-id
Corpo JSON della richiesta:
{ "name": "user-id", "password": "password", "retainedPassword" : "dual-password" }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "UPDATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
REST v1beta4
Per modificare la password di un utente, utilizza una richiesta PUT con il metodo users:update.
La seguente richiesta aggiorna la password dell'account utente
user_name'@'%
. Se l'utente ha un host diverso, devi modificare la chiamata con l'host corretto.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: il tuo ID progetto
- instance-id: l'ID istanza desiderato
- user-id: l'ID dell'utente
- password: la nuova password dell'utente
- dual-password: uno di questi valori enum:
DUAL_PASSWORD
: l'utente può continuare a utilizzare la password precedente.NO_DUAL_PASSWORD
: l'utente non può utilizzare la password precedente.NO_MODIFY_DUAL_PASSWORD
: lo stato della doppia password rimane invariato.
Metodo HTTP e URL:
PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?name=user-id
Corpo JSON della richiesta:
{ "name": "user-id", "password": "password", "retainedPassword" : "dual-password" }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "UPDATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Client mysql
- Per modificare la password, al prompt
mysql
, utilizza la seguente istruzione SET PASSWORD:SET PASSWORD FOR USER_NAME = PASSWORD('auth_string');
- Svuota la tabella
mysql.user
per assicurarti che la modifica rimanga invariata:FLUSH TABLES mysql.user;
Se un utente non riesce ad accedere a causa delle impostazioni dei criteri per le password, modifica la password per sbloccarlo. Assicurati che le password, quando vengono modificate, rispettino i criteri delle password.
Rimuovere un criterio per le password degli utenti
Puoi rimuovere un criterio per le password da un utente che ha il tipo di autenticazione integrato.
gcloud
Per rimuovere il criterio per le password utente, utilizza il comando
gcloud sql users set-password-policy
e il parametro --clear-password-policy
.
Sostituisci quanto segue:
- USER_NAME: il nome utente
- INSTANCE_NAME: il nome dell'istanza
- HOST: il nome host dell'utente come indirizzo IP specifico, intervallo di indirizzi o qualsiasi host (
%
)
gcloud sql users set-password-policy USER_NAME \ --instance=INSTANCE_NAME \ --host=HOST \ --clear-password-policy
REST v1
Per rimuovere un criterio relativo alla password dell'utente, utilizza una richiesta PUT con il metodo users:update.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto
- INSTANCE_ID: l'ID istanza
- USER_ID: l'ID dell'utente
- PASSWORD: la password dell'utente
Metodo HTTP e URL:
PUT https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID
Corpo JSON della richiesta:
{ "name": "USER_ID", "password": "PASSWORD", "data": { "passwordValidationUserPolicy" : {} } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
REST v1beta4
Per rimuovere un criterio relativo alla password dell'utente, utilizza una richiesta PUT con il metodo users:update.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto
- INSTANCE_ID: l'ID istanza
- USER_ID: l'ID dell'utente
- PASSWORD: la password dell'utente
Metodo HTTP e URL:
PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID
Corpo JSON della richiesta:
{ "name": "USER_ID", "password": "PASSWORD", "data": { "passwordValidationUserPolicy" : {} } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Rimuovere un utente
L'utente predefinito può rimuovere gli utenti.
Prima di rimuovere un utente, devi eliminare tutti gli oggetti di sua proprietà o riassegnare la proprietà e revocare eventuali privilegi concessi al ruolo su altri oggetti.
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
- Seleziona Utenti dal menu di navigazione SQL.
- Fai clic su Altre azioni per l'utente che vuoi rimuovere.
- Seleziona Rimuovi e poi di nuovo Rimuovi.
gcloud
Usa il comando
gcloud sql users delete
per rimuovere un utente.
Sostituisci quanto segue:
- USER_NAME: il nome utente.
- HOST: il nome host dell'utente come indirizzo IP specifico, intervallo di indirizzi o qualsiasi host (
%
). - INSTANCE_NAME: il nome dell'istanza.
gcloud sql users delete USER_NAME \ --host=HOST \ --instance=INSTANCE_NAME
REST v1
La richiesta riportata di seguito utilizza il metodo users:delete per eliminare l'account utente specificato.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto
- INSTANCE_ID: l'ID istanza desiderato
- USERNAME: l'indirizzo email dell'account utente o servizio
Metodo HTTP e URL:
DELETE https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "DELETE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
La richiesta riportata di seguito utilizza il metodo users:delete per eliminare l'account utente specificato.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto
- INSTANCE_ID: l'ID istanza desiderato
- USERNAME: l'indirizzo email dell'account utente o servizio
Metodo HTTP e URL:
DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "DELETE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Client mysql
- Per eliminare un utente, al prompt
mysql
, utilizza la seguente istruzione DROP USER:DROP USER 'USER_NAME'@'HOST_NAME';
- Svuota la tabella
mysql.user
per assicurarti che la modifica persista:FLUSH TABLES mysql.user;
Aggiornare le proprietà utente
Per aggiornare le proprietà utente, come host o privilegi, devi utilizzare il clientmysql
. Per ulteriori informazioni, consulta Gestione degli account utente MySQL nella documentazione di MySQL.
Passaggi successivi
- Scopri di più su come funziona Cloud SQL con gli utenti.
- Leggi la documentazione di MySQL sulla creazione di utenti.
- Scopri di più sulla connessione alle istanze.