Questa pagina descrive il funzionamento di Cloud SQL con gli utenti MySQL. Gli account utente MySQL forniscono sicurezza controllando l'accesso ai database MySQL.
Per la documentazione completa sugli utenti in MySQL, consulta Controllo dell'accesso e gestione degli account in la documentazione di MySQL. Per informazioni sulla creazione e la gestione degli utenti Cloud SQL in Cloud SQL, consulta Creare e gestire gli utenti.
Perché hai bisogno di account utente MySQL
Gli account utente MySQL ti consentono di accedere e amministrare l'istanza Cloud SQL. Gli account utente sono necessari anche per le applicazioni per accedere all'istanza.
Limitazioni dei super user
In Cloud SQL, i clienti non possono creare o accedere a utenti con attributi super user.
Poiché Cloud SQL per MySQL è un servizio gestito, limita l'accesso ad alcune procedure e tabelle di sistema.
I privilegi DML (Data Manipulation Language) e DDL (Data Definition Language) sono limitati in alcune tabelle di schemi.
Ecco l'elenco delle tabelle di sistema di MySQL 5.6 nello schema mysql che richiedono autorizzazioni di scrittura:
audit_log_rules_expandedaudit_log_supported_opsaudit_log_rulescloudsql_replica_indexdbeventfuncheartbeatpluginprocusertables_priv
Per MySQL 5.7, ecco l'elenco:
audit_log_rules_expandedaudit_log_supported_opsaudit_log_rulescloudsql_replica_indexdbeventfuncgtid_executedheartbeatpluginprocusertables_priv
Per informazioni correlate su MySQL 8.0 e MySQL 8.4, consulta Privilegi utente di MySQL 8.0 (cloudsqlsuperuser) e Privilegi utente di MySQL 8.4 (cloudsqlsuperuser).
Formato dell'account utente MySQL
Gli account utente MySQL hanno due componenti: un nome utente e un nome host. Il nome utente identifica l'utente, mentre il nome host specifica gli host da cui l'utente può connettersi. Il nome utente e il nome host vengono combinati per creare un account utente:
'<user_name>'@'<host_name>'
Puoi specificare un indirizzo IP o un intervallo di indirizzi specifico per il nome host oppure utilizzare il carattere percentuale ("%") per lasciare il nome host senza restrizioni.
Se ti connetti all'istanza utilizzando un indirizzo IP pubblico, devi aggiungere l'indirizzo IP pubblico del client come indirizzo autorizzato, anche se il nome host dell'utente non è soggetto a restrizioni.
Gli account utente sono definiti sia dal nome utente che dal nome host. Ad
esempio, 'user'@'%' è un account utente diverso da
'user'@'localhost'.
Utente MySQL predefinito
Al momento della creazione, le istanze MySQL hanno un account utente predefinito:
'root'@'%'. Utilizza questo account per connetterti e gestire l'istanza del database per la prima volta. L'utente predefinito ha tutti i privilegi del database
ad eccezione di
SUPER
e FILE. In
Cloud SQL, non puoi rinominare 'root'@'%'.
Il valore predefinito per root'@'% è nessuna password e MySQL non richiede di utilizzare
una password per root'@'%. Tuttavia, poiché root'@'% esiste nella maggior parte delle installazioni MySQL, l'utente root'@'% è un obiettivo comune per l'accesso non autorizzato.
Qualsiasi persona o programma che ottiene l'accesso alla tua istanza ha un accesso e un controllo quasi illimitati sulla tua istanza e sui tuoi dati. Per questo motivo,
ti consigliamo di configurare l'utente root'@'% con una password efficace o di eliminare
questo utente. Per assistenza con la configurazione dell'account utente predefinito, consulta
Configurare l'account utente predefinito.
Utenti del sistema
Cloud SQL supporta i seguenti utenti di sistema:
root@localhost,root@127.0.0.1,root@::1Utilizzato per fornire il servizio di database gestito.
cloudsqlreplica@%Utilizzato come utente di replica per le repliche.
cloudsqlimport@localhost,cloudsqlimport@127.0.0.1Utilizzato per le importazioni di dati.
cloudsqlexport@localhost,cloudsqlexport@127.0.0.1Utilizzato per le esportazioni di dati.
cloudsqloneshotUtilizzato per altre operazioni di database.
cloudsqlapplier@localhostUtilizzato per le operazioni di replica nella replica del server esterno o nella replica tra versioni principali.
cloudsqlobservabilityadminUtilizzato per l'osservabilità del database.
cloudiamgroup@'%'Utilizzato per l'autenticazione del gruppo IAM.
cloudsqlreadonlyUtilizzato per eseguire operazioni di sola lettura sulle tabelle di sistema.
cloudsqlreplicaindexUtilizzato per gestire gli indici secondari sulle repliche.
Non puoi eliminare, modificare o assegnare ruoli di database a questi utenti.
Altri account utente MySQL
Puoi anche creare altri account utente MySQL. Questa è una best practice perché ti consente di utilizzare account utente MySQL diversi per scopi diversi.
Puoi creare un account utente con un nome host limitato oppure utilizzare i comandi SQL per limitare i privilegi sui tuoi account utente.
Per ulteriori informazioni sui nomi degli account utente, consulta Specificare i nomi degli account nella documentazione di MySQL. Per creare un nuovo utente MySQL in Cloud SQL, consulta Creare un utente.
Privilegi utente di MySQL 5.6 e 5.7
MySQL fornisce privilegi granulari che puoi concedere o rimuovere per un utente. In questo modo puoi controllare le azioni che un utente può eseguire sulla tua istanza.
Gli utenti creati utilizzando Cloud SQL hanno gli stessi privilegi dell'
utente MySQL predefinito. Puoi modificare i loro privilegi utilizzando le
GRANT o le
REVOKE istruzioni.
Quando utilizzi il client mysql per creare un utente, devi concedere esplicitamente i privilegi all'
utente con l'istruzione GRANT.
Per ulteriori informazioni sui privilegi supportati da MySQL, consulta Privilegi forniti da MySQL.
Privilegi utente di MySQL 8.0 (cloudsqlsuperuser)
In Cloud SQL per MySQL 8.0, quando crei un nuovo utente che utilizza l'autenticazione integrata, all'utente viene concesso automaticamente il ruolo cloudsqlsuperuser. Il ruolo cloudsqlsuperuser è un ruolo Cloud SQL che contiene una serie di privilegi MySQL. Questo ruolo
concede all'utente tutti i privilegi statici di MySQL, ad eccezione di SUPER
e FILE.
Il ruolo cloudsqlsuperuser supporta solo i seguenti privilegi dinamici in base alle versioni secondarie di MySQL 8.0:
MySQL 8.0.18
MySQL 8.0.26
MySQL 8.0.27
MySQL 8.0.28
APPLICATION_PASSWORD_ADMINCONNECTION_ADMINROLE_ADMINSET_USER_IDXA_RECOVER_ADMINCLOUDSQL_SPECIAL_VARIABLES_ADMINFLUSH_OPTIMIZER_COSTSFLUSH_STATUSFLUSH_TABLESFLUSH_USER_RESOURCESINNODB_REDO_LOG_ENABLESHOW_ROUTINEAUTHENTICATION_POLICY_ADMINGROUP_REPLICATION_STREAMPASSWORDLESS_USER_ADMINAUDIT_ABORT_EXEMPT
MySQL 8.0.29 (ritirato)
APPLICATION_PASSWORD_ADMINCONNECTION_ADMINROLE_ADMINSET_USER_IDXA_RECOVER_ADMINCLOUDSQL_SPECIAL_VARIABLES_ADMINFLUSH_OPTIMIZER_COSTSFLUSH_STATUSFLUSH_TABLESFLUSH_USER_RESOURCESINNODB_REDO_LOG_ENABLESHOW_ROUTINEAUTHENTICATION_POLICY_ADMINGROUP_REPLICATION_STREAMPASSWORDLESS_USER_ADMINAUDIT_ABORT_EXEMPTSENSITIVE_VARIABLES_OBSERVER
MySQL 8.0.30 e versioni successive
APPLICATION_PASSWORD_ADMINCONNECTION_ADMINROLE_ADMINSET_USER_IDXA_RECOVER_ADMINCLOUDSQL_SPECIAL_VARIABLES_ADMINFLUSH_OPTIMIZER_COSTSFLUSH_STATUSFLUSH_TABLESFLUSH_USER_RESOURCESINNODB_REDO_LOG_ENABLESHOW_ROUTINEAUTHENTICATION_POLICY_ADMINGROUP_REPLICATION_STREAMPASSWORDLESS_USER_ADMINAUDIT_ABORT_EXEMPTSENSITIVE_VARIABLES_OBSERVERFIREWALL_EXEMPT
Il ruolo cloudsqlsuperuser non supporta alcuna operazione DDL (Data Definition Language) sul database di sistema mysql.
Per visualizzare un elenco completo dei privilegi concessi al ruolo cloudsqlsuperuser,
esegui l'istruzione SHOW GRANTS
nel client mysql:
SHOW GRANTS FOR 'cloudsqlsuperuser'
Privilegi utente di MySQL 8.4 (cloudsqlsuperuser)
Analogamente a Cloud SQL per MySQL 8.0, in Cloud SQL per MySQL 8.4, quando crei un nuovo utente che utilizza l'autenticazione integrata, all'utente viene concesso automaticamente il ruolo cloudsqlsuperuser.
In MySQL 8.4, il ruolo cloudsqlsuperuser ha gli stessi privilegi di MySQL 8.0.x.
Tuttavia, MySQL 8.4 presenta le seguenti differenze principali rispetto a MySQL 8.0.x:
- Rimuove il
SET_USER_IDprivilegio e lo sostituisce con i privilegiALLOW_NONEXISTENT_DEFINEReSET_ANY_DEFINERappena introdotti. - Concede
FLUSH_PRIVILEGEScome sottoinsieme del privilegioRELOAD. Questa concessione non sostituisce il privilegioRELOAD, che viene comunque concesso per la compatibilità con le versioni precedenti.RELOAD - Concede il nuovo
OPTIMIZE_LOCAL_TABLEprivilegio.
Inoltre, Cloud SQL per MySQL 8.4 non concede i privilegi
TRANSACTION_GTID_TAG
o TELEMETRY_LOG_ADMIN
introdotti in MySQL 8.4.
Ruoli MySQL
Se utilizzi MySQL 8.0 o versioni successive, puoi creare ruoli personalizzati per organizzare e assegnare i privilegi del database agli utenti MySQL. Puoi utilizzare i ruoli per fornire i privilegi iniziali del database agli utenti quando crei un'istanza Cloud SQL.
Per ulteriori informazioni sulla creazione e sull'utilizzo dei ruoli in MySQL, consulta Utilizzo dei ruoli.
Quando crei un utente MySQL integrato in Cloud SQL per MySQL e non assegni alcun ruolo di database, all'utente MySQL integrato viene concesso automaticamente il ruolo cloudsqlsuperuser.
In alternativa, puoi creare un nuovo utente MySQL e assegnare un ruolo o ruoli personalizzati diversi con privilegi più granulari.
Per ulteriori informazioni sull'assegnazione dei ruoli agli utenti in
Cloud SQL per MySQL, consulta
Gestire gli utenti con l'autenticazione integrata.
Utenti IAM e ruoli di database
Quando crei un account utente IAM in Cloud SQL per MySQL e non assegni alcun ruolo di database, all'utente non viene concesso automaticamente alcun ruolo di database.
Puoi concedere il ruolo cloudsqlsuperuser e i ruoli di database personalizzati a utenti, service account o gruppi IAM assegnando questi ruoli di database quando crei o aggiorni gli account IAM sull'istanza.
Per ulteriori informazioni sulla concessione dei ruoli agli utenti IAM, consulta Assegnare i ruoli di database durante l'aggiunta di un account IAM a un'istanza.
Passaggi successivi
- Configura l'account utente
rootper l'istanza. - Crea e gestisci gli utenti.
- Crea e gestisci i database.
- Consulta la documentazione di MySQL sugli utenti MySQL.
- Consulta la documentazione di MySQL sui privilegi forniti da MySQL.
- Scopri le opzioni per la connessione all'istanza.