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 nella documentazione di MySQL. Per informazioni sulla creazione e sulla gestione degli utenti Cloud SQL in Cloud SQL, consulta Creare e gestire gli utenti.
Perché sono necessari account utente MySQL
Gli account utente MySQL ti consentono di accedere e amministrare il tuo account Cloud SQL in esecuzione in un'istanza Compute Engine. Gli account utente sono necessari anche per consentire alle applicazioni di accedere in esecuzione in un'istanza Compute Engine.
Restrizioni per gli utenti con privilegi di superutente
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 a determinate procedure e tabelle di sistema.
I privilegi di Data Manipulation Language (DML) e Data Definition Language (DDL) sono limitati in alcune tabelle dello schema.
Ecco l'elenco delle tabelle di sistema MySQL 5.6 nella
Schema mysql che richiede autorizzazioni di scrittura:
audit_log_rules_expanded
, audit_log_supported_ops
, audit_log_rules
cloudsql_replica_index
, db
, event
, func
, heartbeat
, plugin
, proc
,
user
e tables_priv
.
Per MySQL 5.7, ecco l'elenco:
audit_log_rules_expanded
, audit_log_supported_ops
, audit_log_rules
,
cloudsql_replica_index
, db
, event
, func
, gtid_executed
,
heartbeat
, plugin
, proc
, user
e tables_priv
.
Per informazioni correlate a MySQL 8.0 e MySQL 8.4, vedi Privilegi utente MySQL 8.0 (cloudsqlsuperuser) e Privilegi utente MySQL 8.4 (cloudsqlsuperuser).
Formato dell'account utente MySQL
Gli account utente MySQL hanno due componenti: un nome utente e un nome host. La nomeutente identifica l'utente, mentre il nome host specifica quali host può per connetterti. 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 per il nome host oppure utilizzare il carattere percentuale ("%") per lasciare senza restrizioni il nome host. Tieni presente che Se ti connetti all'istanza utilizzando indirizzi IP, devi aggiungere il client come Indirizzo autorizzato, anche se il nome host non ha limitazioni.
Gli account utente sono definiti sia dal nome utente che dal nome host. Per
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 di database per la prima volta. L'utente predefinito ha tutto il database
privilegiati tranne che
SUPER
e
FILE. In Cloud SQL,
impossibile rinominare 'root'@'%'
.
L'impostazione predefinita per root'@'%
è nessuna password e MySQL non richiede l'utilizzo
una password per root'@'%
. Tuttavia, poiché root'@'%
esiste nella maggior parte di MySQL
installazioni di app, l'utente root'@'%
è un obiettivo comune per gli accessi non autorizzati.
Qualsiasi persona o programma che abbia accesso alla tua istanza ha quasi
accesso illimitato e controllo sull'istanza e sui dati. Per questo motivo,
ti consigliamo di configurare l'utente root'@'%
con una password efficace o di eliminarlo. Per assistenza con la configurazione dell'account utente predefinito, consulta
Configura l'account utente predefinito.
Utenti del sistema
Esistono sette utenti di sistema:
root@localhost
,root@127.0.0.1
,root@::1
Utilizzato per fornire il servizio di database gestito.
cloudsqlreplica@%
Utilizzato come utente di replica per le repliche.
cloudsqlimport@localhost
,cloudsqlimport@127.0.0.1
Utilizzato per le importazioni di dati.
cloudsqlexport@localhost
,cloudsqlexport@127.0.0.1
Utilizzato per le esportazioni dei dati.
cloudsqloneshot
Utilizzato per altre operazioni del database.
cloudsqlapplier@localhost
Utilizzato per le operazioni di replica nella replica esterna al server o tra le versioni principali.
cloudsqlobservabilityadmin
Utilizzato per l'osservabilità del database.
cloudiamgroup@'%'
Utilizzato per l'autenticazione di gruppo IAM.
Non puoi eliminare o modificare questi utenti.
Altri account utente MySQL
Puoi anche creare altri account utente MySQL. Questa è una buona prassi perché consente di utilizzare account utente MySQL diversi per scopi diversi.
Puoi creare un account utente con un nome host con limitazioni oppure utilizzare Comandi SQL per limitare i privilegi sui tuoi account utente.
Per ulteriori informazioni sui nomi degli account utente, consulta la sezione Specificare i nomi degli account nella documentazione di MySQL. Per creare un nuovo utente MySQL in Cloud SQL, consulta Crea un utente.
Privilegi utente MySQL 5.6 e 5.7
MySQL fornisce privilegi granulari che puoi concedere o rimuovere per un utente. Questo consente di controllare ciò che un utente può fare sull'istanza.
Gli utenti creati con Cloud SQL hanno gli stessi privilegi del
utente MySQL predefinito. Puoi modificare i relativi privilegi utilizzando le istruzioni
GRANT
o
REVOKE
.
Quando utilizzi il client mysql
per creare un utente, devi concedere esplicitamente i relativi privilegi con l'istruzione GRANT
.
Per ulteriori informazioni sui privilegi supportati da MySQL, vedi Privilegi forniti da MySQL.
Privilegi utente di MySQL 8.0 (cloudsqlsuperuser
)
In Cloud SQL per MySQL 8.0, quando crei un nuovo utente, quest'ultimo viene
il ruolo cloudsqlsuperuser
è stato concesso automaticamente. Il ruolo cloudsqlsuperuser
è un ruolo Cloud SQL che contiene una serie di privilegi MySQL. Questo ruolo
assegna all'utente tutti i privilegi statici 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_ADMIN
CONNECTION_ADMIN
ROLE_ADMIN
SET_USER_ID
XA_RECOVER_ADMIN
CLOUDSQL_SPECIAL_VARIABLES_ADMIN
FLUSH_OPTIMIZER_COSTS
FLUSH_STATUS
FLUSH_TABLES
FLUSH_USER_RESOURCES
INNODB_REDO_LOG_ENABLE
SHOW_ROUTINE
AUTHENTICATION_POLICY_ADMIN
GROUP_REPLICATION_STREAM
PASSWORDLESS_USER_ADMIN
AUDIT_ABORT_EXEMPT
MySQL 8.0.29 (deprecato)
APPLICATION_PASSWORD_ADMIN
CONNECTION_ADMIN
ROLE_ADMIN
SET_USER_ID
XA_RECOVER_ADMIN
CLOUDSQL_SPECIAL_VARIABLES_ADMIN
FLUSH_OPTIMIZER_COSTS
FLUSH_STATUS
FLUSH_TABLES
FLUSH_USER_RESOURCES
INNODB_REDO_LOG_ENABLE
SHOW_ROUTINE
AUTHENTICATION_POLICY_ADMIN
GROUP_REPLICATION_STREAM
PASSWORDLESS_USER_ADMIN
AUDIT_ABORT_EXEMPT
SENSITIVE_VARIABLES_OBSERVER
MySQL 8.0.30 e versioni successive
APPLICATION_PASSWORD_ADMIN
CONNECTION_ADMIN
ROLE_ADMIN
SET_USER_ID
XA_RECOVER_ADMIN
CLOUDSQL_SPECIAL_VARIABLES_ADMIN
FLUSH_OPTIMIZER_COSTS
FLUSH_STATUS
FLUSH_TABLES
FLUSH_USER_RESOURCES
INNODB_REDO_LOG_ENABLE
SHOW_ROUTINE
AUTHENTICATION_POLICY_ADMIN
GROUP_REPLICATION_STREAM
PASSWORDLESS_USER_ADMIN
AUDIT_ABORT_EXEMPT
SENSITIVE_VARIABLES_OBSERVER
FIREWALL_EXEMPT
Il ruolo cloudsqlsuperuser
non supporta alcun DDL (Data Definition Language)
operazioni 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, quest'ultimo viene
il ruolo cloudsqlsuperuser
è stato concesso automaticamente.
In MySQL 8.4, il ruolocloudsqlsuperuser
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 privilegio
SET_USER_ID
e lo sostituisce con i nuovi privilegiALLOW_NONEXISTENT_DEFINER
eSET_ANY_DEFINER
. - Concessioni
FLUSH_PRIVILEGES
come sottoinsieme del privilegioRELOAD
. Questa concessione non sostituisce il privilegioRELOAD
e ilRELOAD
è comunque concesso per la compatibilità con le versioni precedenti. - Concedi il nuovo privilegio
OPTIMIZE_LOCAL_TABLE
.
Inoltre, Cloud SQL per MySQL 8.4 non concede i privilegi TRANSACTION_GTID_TAG
o TELEMETRY_LOG_ADMIN
introdotti in MySQL 8.4.
Passaggi successivi
- Configura l'account utente
root
per la tua istanza. - Creare e gestire gli utenti.
- Crea e gestisci i database.
- Consulta la documentazione di MySQL sugli utenti di MySQL.
- Consulta la documentazione di MySQL sui privilegi forniti da MySQL.
- Scopri le opzioni per connetterti all'istanza.