Come configurare MySQL su Google Compute Engine

Last reviewed 2021-11-23 UTC

Esistono diverse opzioni per eseguire il deployment di MySQL all'interno del tuo progetto Google Cloud. Puoi utilizzare Cloud SQL, Google Cloud Marketplace o installare manualmente MySQL su Compute Engine.

Cloud SQL offre MySQL come servizio web. Puoi utilizzare Cloud SQL per ospitare il tuo database MySQL nel cloud di Google e lasciare che sia Google Cloud a gestire le attività amministrative come la replica, la gestione delle patch e la gestione del database.

Cloud Marketplace offre un'interfaccia semplice con un solo clic che semplifica l'installazione di MySQL su un'istanza Compute Engine. Cloud Marketplace include non solo un'installazione MySQL autonoma, ma anche diversi stack di sviluppo web che utilizzano MySQL, tra cui stack LAMP, LEMP e cluster Percona MySQL.

Se preferisci installare e personalizzare manualmente MySQL, puoi utilizzare Compute Engine per creare un database MySQL in pochi minuti. Questo documento fornisce indicazioni su quale opzione scegliere e illustra la procedura di installazione manuale di un database MySQL su Compute Engine.

Come scegliere l'opzione di deployment di MySQL giusta

Cloud SQL è un'ottima soluzione se vuoi la comodità di avere Google Cloud che si occupa delle attività di amministrazione del database e del server di backend. Ad esempio, Cloud SQL fornisce backup automatici e recupero point-in-time. Inoltre, i dati vengono replicati in più zone per una maggiore disponibilità e resilienza.

Ti consigliamo di installare MySQL su Compute Engine se hai bisogno di una funzionalità MySQL non supportata da Cloud SQL. Ad esempio, Cloud SQL non supporta le funzioni definite dall'utente o il privilegio SUPER. Per ulteriori informazioni, consulta le domande frequenti su Cloud SQL.

Se decidi di installare MySQL su Compute Engine, puoi utilizzare Cloud Marketplace per eseguire il deployment di un'installazione di MySQL oppure installare manualmente MySQL su un'istanza Compute Engine. Cloud Marketplace offre un modo pratico per eseguire il deployment di MySQL all'interno di stack di sviluppo più grandi. Cloud Marketplace offre diverse opzioni per le installazioni di MySQL, tra cui un'installazione MySQL autonoma, stack LAMP, stack LEMP, stack Nginx, un'installazione Percona MySQL Cluster e molte altre opzioni.

Se le offerte di Cloud Marketplace non soddisfano le tue esigenze, puoi installare manualmente MySQL su un'istanza Compute Engine. Ad esempio, potresti voler eseguire il deployment di MySQL su un'immagine personalizzata che hai creato o potresti voler avere il controllo completo del processo di installazione.

Per installare manualmente MySQL su un'istanza Compute Engine, devi solo creare un'istanza Compute Engine e installare MySQL direttamente sull'istanza.

Per ulteriori informazioni su ciascuna opzione, consulta le seguenti risorse:

Obiettivi

  • Crea un'istanza di Compute Engine
  • Installa MySQL
  • Connettiti a MySQL

Prerequisiti

  1. Crea un nuovo progetto nella console Google Cloud. Puoi utilizzare un progetto esistente, ma la creazione di un nuovo progetto semplifica la pulizia.

    Puoi completare tutti i passaggi descritti in questo documento utilizzando la console Google Cloud, ma se preferisci utilizzare l'interfaccia a riga di comando gcloud, segui questi passaggi per abilitare l'API Compute Engine e installare lGoogle Cloud CLI.

  2. Utilizza la console Google Cloud per abilitare l'API Compute Engine.

  3. Installa la gcloud CLI.

  4. Configura la tua area di lavoro per rendere i comandi meno descrittivi. Sostituisci i valori del progetto con PROJECT_ID, REGION e ZONE nei seguenti comandi. Per l'elenco completo delle zone, consulta Regioni e zone disponibili.

    gcloud config set project PROJECT_ID
    gcloud config set compute/region REGION
    gcloud config set compute/zone ZONE
    

Crea un'istanza Compute Engine e stabilisci una connessione SSH

Crea un'istanza Compute Engine per MySQL e stabilisci una connessione SSH con l'istanza appena creata. Il sistema operativo predefinito è Debian versione 10. Se preferisci utilizzare un sistema operativo diverso per questo tutorial, puoi scegliere tra le opzioni descritte nella pagina delle immagini pubbliche della documentazione di Compute Engine.

Console

Crea l'istanza Compute Engine

Per creare l'istanza Compute Engine nella console Google Cloud, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Istanze VM Compute Engine.

    Vai a Istanze VM di Compute Engine.

  2. Seleziona il progetto appena creato e fai clic su Continua.

  3. Fai clic su Crea istanza (Nuova istanza se hai istanze esistenti). Assegna all'istanza il nome mysql-test.

  4. Per specificare un sistema operativo diverso dal valore predefinito, nella sezione Disco di avvio, fai clic su Cambia per configurare le proprietà del disco di avvio. Nella scheda Immagini pubbliche, seleziona un sistema operativo e fai clic su Salva.

  5. Per rispettare le best practice per la sicurezza, crea l'istanza senza un indirizzo IP esterno.

    Espandi Opzioni avanzate ed Networking. In Interfacce di rete, espandi l'interfaccia predefinita e nel menu Indirizzo IPv4 esterno seleziona Nessuno.

  6. Fai clic su Crea.

Configurare la Network Address Translation

Per configurare e gestire la Network Address Translation con Cloud NAT, svolgi i seguenti passaggi:

  1. Nella console Google Cloud, vai alla pagina Cloud NAT.

    Vai a Cloud NAT

  2. Fai clic su Inizia o Crea gateway Cloud NAT.

  3. In Nome gateway, inserisci nat-simple-configuration.

  4. Per selezionare il router Cloud, nella sezione Seleziona il router Cloud, procedi nel seguente modo:

    1. In Rete, seleziona predefinita.
    2. In Regione, seleziona la regione specificata per la VM.
    3. Per Router Cloud, seleziona Crea nuovo router.

      Nella finestra di dialogo Crea un router visualizzata, fornisci un nome per il router, ad esempio nat-router-simple-configuration, e fai clic su Crea.

  5. Fai clic su Configurazioni avanzate.

  6. Nella sezione Logging, seleziona Traduzione ed errori. Questa impostazione configura Cloud NAT in modo da inviare tutti i log a Cloud Logging.

  7. Fai clic su Crea.

Stabilisci una connessione SSH alla VM

Per stabilire una connessione SSH:

  1. Nella pagina Istanze VM, individua la nuova istanza VM nell'elenco.

  2. Nella colonna Connetti per la VM, fai clic su SSH. Il terminale SSH si apre in una finestra del browser.

gcloud

  1. Per creare un'istanza Compute Engine, utilizza il comando gcloud compute instances create. Per specificare il sistema operativo, aggiungi il parametro --image-family seguito dalla famiglia di immagini o il parametro --image seguito dal nome dell'immagine per una versione dell'immagine specifica. Ad esempio, per utilizzare l'immagine più recente della famiglia Debian 10, aggiungi --image-family debian-10. Quando utilizzi immagini pubbliche, il progetto di immagini deve essere fornito utilizzando il parametro --image-project.

    gcloud compute instances create \
        --image-family debian-10 \
        --image-project debian-cloud \
        --no-address \
      mysql-test
    
  2. Crea un router Cloud.

    gcloud compute routers create nat-router-simple-configuration \
        --network=default
    
  3. Configura e gestisci la Network Address Translation con Cloud NAT.

    gcloud compute routers nats create nat-simple-configuration \
        --router=nat-router-simple-configuration \
        --auto-allocate-nat-external-ips \
        --nat-all-subnet-ip-ranges \
        --enable-logging
    
  4. Connettiti all'istanza utilizzando ssh.

    gcloud compute ssh \
        --tunnel-through-iap \
        mysql-test
    

    La connessione SSH viene effettuata utilizzando l'inoltro TCP gestito da Identity-Aware Proxy (IAP).

Installa MySQL

I passaggi riportati di seguito descrivono come installare MySQL sull'istanza Compute Engine.

Debian 10 o versioni successive

Queste istruzioni installano MySQL 8 o 5.7.

Le versioni 10 e successive di Debian contengono MariaDB anziché MySQL come parte del suo sistema di gestione dei pacchetti. MariaDB mantiene la compatibilità con il protocollo MySQL, ma ha un insieme di funzionalità in evoluzione indipendente. Per maggiori dettagli, consulta MariaDB e MySQL.

Per installare MySQL, scarica il pacchetto di rilascio e installalo manualmente utilizzando il comando dpkg.

  1. Installa la dipendenza wget.

    sudo apt-get install -y wget
    
  2. Scarica il pacchetto di rilascio di MySQL Community Server.

    export DEB_FILE=mysql-apt-config_0.8.20-1_all.deb
    cd /tmp
    curl -L --output ${DEB_FILE} \
         https://dev.mysql.com/get/${DEB_FILE}
    
  3. Verifica l'integrità del file del pacchetto di release.

    cat > ${DEB_FILE}.md5 << EOL
    799bb0aefb93d30564fa47fc5d089aeb ${DEB_FILE}
    EOL
    md5sum --check ${DEB_FILE}.md5
    

    L'autenticità e l'integrità del file sono verificate se viene visualizzato il seguente output.

    mysql-apt-config_0.8.20-1_all.deb: OK
    
  4. Dopo aver verificato il file, aggiungi il pacchetto MySQL al repository dei pacchetti locale.

    sudo dpkg -i ${DEB_FILE}
    

    Ti viene chiesto di confermare le opzioni di installazione, inclusa la versione di MySQL.

  5. Con l'opzione di menu MySQL Server e cluster in alto selezionata, premi Invio e utilizza i tasti freccia per scegliere una versione del server.

    Questa guida presuppone che tu scelga MySQL 8.0 o 5.7. Premi Invio sulla tastiera dopo aver selezionato la versione.

  6. Quando le opzioni selezionate nel menu di configurazione sono di tuo gradimento, utilizza i tasti freccia per selezionare Ok nel menu e premi Invio sulla tastiera.

  7. Aggiorna la cache del pacchetto.

    sudo apt-get update
    

    Se ricevi un errore GPG simile a Non è stato possibile verificare le seguenti firme perché la chiave pubblica non è disponibile: NO_PUBKEY 467B942D3A79BD29, importa le chiavi GPG mancanti con un comando che segue questo pattern:

    sudo apt-key adv \
        --keyserver keyserver.ubuntu.com \
        --recv-keys 467B942D3A79BD29
    

    Nel messaggio di errore dimostrativo, la chiave pubblica mancante è 467B942D3A79BD29; fornisci questo valore con l'opzione --recv-keys.

    Ripeti il comando per aggiornare la cache del pacchetto.

  8. Installa MySQL. Il processo di installazione avvia il servizio MySQL per te.

    sudo apt-get -y install mysql-community-server
    

    Ti viene chiesto di fornire alcuni dettagli per l'installazione, come la password di root.

Debian 9

Queste istruzioni installano MySQL 8 o 5.7.

Per impostazione predefinita, alcune versioni di Debian, come Debian 9, installano MariaDB come server MySQL predefinito. MariaDB è progettato per essere ampiamente compatibile con MySQL e può essere richiamato utilizzando gli stessi comandi. Per informazioni dettagliate sulle differenze tra MariaDB e MySQL standard, consulta Passaggio da MySQL a MariaDB in Debian 9.

Per installare MySQL, segui queste istruzioni:

  1. Scarica il pacchetto di rilascio di MySQL Community Server.

    export DEB_FILE=mysql-apt-config_0.8.17-1_all.deb
    cd /tmp
    curl -L --output ${DEB_FILE} \
         https://dev.mysql.com/get/${DEB_FILE}
    
  2. Verifica l'integrità del file del pacchetto di release.

    cat > ${DEB_FILE}.md5 << EOL
    9e393c991311ead61dcc8313aab8e230 ${DEB_FILE}
    EOL
    md5sum --check ${DEB_FILE}.md5
    

    L'autenticità e l'integrità del file sono verificate se viene visualizzato il seguente output.

    mysql-apt-config_0.8.17-1_all.deb: OK
    
  3. Dopo aver verificato il file, aggiungi il pacchetto MySQL al repository dei pacchetti locale.

    sudo dpkg -i ${DEB_FILE}
    

    Ti viene chiesto di confermare le opzioni di installazione, inclusa la versione di MySQL.

  4. Con l'opzione di menu MySQL Server e cluster in alto selezionata, premi Invio e utilizza i tasti freccia per scegliere una versione del server.

    Questa guida presuppone che tu scelga MySQL 8.0 o 5.7. Premi Invio sulla tastiera dopo aver selezionato la versione.

  5. Quando le opzioni selezionate nel menu di configurazione sono di tuo gradimento, utilizza i tasti freccia per selezionare Ok nel menu e premi Invio sulla tastiera.

  6. Aggiorna la cache del pacchetto.

    sudo apt-get update
    

    Se ricevi un errore GPG simile a Non è stato possibile verificare le seguenti firme perché la chiave pubblica non è disponibile: NO_PUBKEY 467B942D3A79BD29, importa le chiavi GPG mancanti con un comando che segue questo pattern:

    sudo apt-key adv \
        --keyserver keyserver.ubuntu.com \
        --recv-keys 467B942D3A79BD29
    

    Nel messaggio di errore dimostrativo, la chiave pubblica mancante è 467B942D3A79BD29; fornisci questo valore con l'opzione --recv-keys.

    Ripeti il comando per aggiornare la cache del pacchetto.

  7. Installa MySQL. Il processo di installazione avvia il servizio MySQL per te.

    sudo apt-get -y install mysql-community-server
    

Ubuntu

Per Ubuntu 1804 e versioni precedenti, queste istruzioni installano MySQL 5.7.
Per Ubuntu 2004 e versioni successive, queste istruzioni installano MySQL 8.

  1. Aggiorna il gestore dei pacchetti apt-get.

    sudo apt-get update
    
  2. Installa MySQL. Il processo di installazione avvia il servizio MySQL per te.

    sudo apt-get -y install mysql-server
    
  3. Per impostazione predefinita nelle distribuzioni Ubuntu, mysql autentica l'utente root con il plug-in auth_socket. Esegui questa query per verificare questa configurazione predefinita:

    echo "SELECT user, authentication_string, plugin, host
            FROM mysql.user WHERE user='root' ;" \
         | sudo mysql -t -u root
    

    L'output mostra che l'utente root che si connette da localhost utilizzerà il plug-in auth_socket:

    +------+-----------------------+-------------+-----------+
    | user | authentication_string | plugin      | host      |
    +------+-----------------------+-------------+-----------+
    | root |                       | auth_socket | localhost |
    +------+-----------------------+-------------+-----------+
    
  4. Modifica questa impostazione e imposta una password di root difficile da indovinare:

    export PASSWORD=`uuidgen`; echo "Root password is : $PASSWORD"
    echo "ALTER USER 'root'@'localhost'
          IDENTIFIED WITH mysql_native_password BY '$PASSWORD'" \
          | sudo mysql -u root
    

    L'output contiene la nuova password di root:

    Root password is : 25fe2177-778a-414f-b80e-5fb8c8671de3
    

CentOS o RHEL 7

Queste istruzioni installano MySQL 8.

La versione 7 di CentOS e RHEL contiene MariaDB anziché MySQL come parte del suo sistema di gestione dei pacchetti. Per installare MySQL, devi prima aggiornare il gestore dei pacchetti.

  1. Scarica il pacchetto di rilascio di MySQL Community Server.

    export RPM_FILE=mysql80-community-release-el7-4.noarch.rpm
    cd /tmp
    curl -L --output ${RPM_FILE} \
         https://dev.mysql.com/get/${RPM_FILE}
    
  2. Verifica l'integrità del file del pacchetto di release.

    cat > ${RPM_FILE}.md5 << EOL
    8b55d5fc443660fab90f9dc328a4d9ad ${RPM_FILE}
    EOL
    md5sum --check ${RPM_FILE}.md5
    

    L'autenticità e l'integrità del file sono verificate se viene visualizzato il seguente output.

    mysql80-community-release-el7-4.noarch.rpm: OK
    
  3. Aggiorna il gestore dei pacchetti in modo da includere MySQL.

    sudo rpm -Uvh ${RPM_FILE}
    
  4. Installa MySQL.

    sudo yum -y install mysql-community-server
    
  5. Avvia il server MySQL.

    sudo /usr/bin/systemctl start mysqld
    
  6. Ottenere la password root temporanea dai log del server

    sudo cat /var/log/mysqld.log | grep -i 'temporary password'
    

Rocky Linux o RHEL 8

Queste istruzioni installano MySQL 8.

La versione 8 di Rocky Linux, CentOS Stream e RHEL contiene MariaDB anziché MySQL come parte del sistema di gestione dei pacchetti. Per installare MySQL, devi prima aggiornare il gestore dei pacchetti.

  1. Scarica il pacchetto di rilascio di MySQL Community Server.

    export RPM_FILE=mysql80-community-release-el8-2.noarch.rpm
    cd /tmp
    curl -L --output ${RPM_FILE} \
         https://dev.mysql.com/get/${RPM_FILE}
    
  2. Verifica l'integrità del file del pacchetto di release.

    cat > ${RPM_FILE}.md5 << EOL
    0ba3feb1c9ee35d30e5ae683accaf54b ${RPM_FILE}
    EOL
    md5sum --check ${RPM_FILE}.md5
    

    L'autenticità e l'integrità del file sono verificate se viene visualizzato il seguente output.

    mysql80-community-release-el8-2.noarch.rpm: OK
    
  3. Aggiorna il gestore dei pacchetti in modo da includere MySQL.

    sudo rpm -iUvh ${RPM_FILE}
    
  4. Installa MySQL. Durante l'installazione, disattiva il repository AppStream in modo che l'installazione utilizzi il server della community.

    sudo yum module disable -y mysql
    sudo yum install -y \
        --disablerepo=appstream \
      mysql-community-server
    
  5. Avvia il server MySQL.

    sudo /usr/bin/systemctl start mysqld
    
  6. Ottenere la password root temporanea dai log del server

    sudo cat /var/log/mysqld.log | grep -i 'temporary password'
    

Migliorare la sicurezza dell'installazione di MySQL

Per migliorare la sicurezza dell'installazione di MySQL, esegui il comando mysql_secure_installation. Se non hai impostato una password durante la procedura di installazione, creane una in questo passaggio. Per ulteriori informazioni su questo comando, consulta la documentazione di MySQL relativa a mysql_secure_installation.

sudo mysql_secure_installation

Connettiti a MySQL

I passaggi seguenti descrivono come connettersi a MySQL dall'istanza mysql-test.

MySQL 8.0

  1. Connettiti a MySQL utilizzando il client MySQL.

    sudo mysql -u root -p
    

    Quando ti connetti a MySQL, il prompt cambia in mysql>.

    A questo punto puoi eseguire i comandi MySQL. Ad esempio, il seguente comando mostra i thread in esecuzione, inclusa la connessione corrente.

    mysql> SHOW processlist;
    +----+-----------------+-----------+------+---------+------+------------------------+------------------+
    | Id | User            | Host      | db   | Command | Time | State                  | Info             |
    +----+-----------------+-----------+------+---------+------+------------------------+------------------+
    |  5 | event_scheduler | localhost | NULL | Daemon  | 1889 | Waiting on empty queue | NULL             |
    | 14 | root            | localhost | NULL | Query   |    0 | init                   | show processlist |
    +----+-----------------+-----------+------+---------+------+------------------------+------------------+
    2 rows in set (0.00 sec)

    Puoi utilizzare il seguente comando per generare un elenco di utenti.

    mysql> SELECT User, Host, authentication_string FROM mysql.user;
    +------------------+-----------+------------------------------------------------------------------------+
    | User             | Host      | authentication_string                                                  |
    +------------------+-----------+------------------------------------------------------------------------+
    | mysql.infoschema | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
    | mysql.session    | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
    | mysql.sys        | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
    | root             | localhost | $A$005$,BS{G+*#cVYxb6x40q0aFS5dp2/Kz6u2vennR5qe0eBKVA/6VW5B            |
    +------------------+-----------+------------------------------------------------------------------------+
    4 rows in set (0.00 sec)
  2. Al termine dell'esecuzione dei comandi, utilizza il comando exit per uscire dal client MySQL, quindi utilizza di nuovo exit per uscire dall'istanza Compute Engine.

    mysql> exit
    Bye

MySQL 5.7

  1. Connettiti a MySQL utilizzando il client MySQL.

    sudo mysql -u root -p
    

    Quando ti connetti a MySQL, il prompt cambia in mysql>.

    A questo punto puoi eseguire i comandi MySQL. Ad esempio, il seguente comando mostra i thread in esecuzione, inclusa la connessione corrente.

    mysql> SHOW processlist;
    +----+------+-----------+------+---------+------+-------+------------------+
    | Id | User | Host      | db   | Command | Time | State | Info             |
    +----+------+-----------+------+---------+------+-------+------------------+
    | 51 | root | localhost | NULL | Query   |    0 | NULL  | show processlist |
    +----+------+-----------+------+---------+------+-------+------------------+
    1 row in set (0.00 sec)

    Puoi utilizzare il seguente comando per generare un elenco di utenti.

    mysql> SELECT User, Host, authentication_string FROM mysql.user;
    +---------------+-----------+-------------------------------------------+
    | User          | Host      | authentication_string                     |
    +---------------+-----------+-------------------------------------------+
    | root          | localhost | *A047B05AAB007B33F8F2BD1FD404661D167D6348 |
    | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    | mysql.sys     | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    +---------------+-----------+-------------------------------------------+
    3 rows in set (0.00 sec)
  2. Al termine dell'esecuzione dei comandi, utilizza il comando exit per uscire dal client MySQL, quindi utilizza di nuovo exit per uscire dall'istanza Compute Engine.

    mysql> exit
    Bye

Pulizia

Al termine del tutorial, puoi eliminare le risorse che hai creato in modo che smettano di utilizzare la quota e di generare addebiti. Le sezioni seguenti descrivono come eliminare o disattivare queste risorse.

Elimina il progetto

Il modo più semplice per eliminare la fatturazione è eliminare il progetto che hai creato per il tutorial.

Per eliminare il progetto:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Eliminazione di istanze

Per eliminare un'istanza di Compute Engine:

  1. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. Select the checkbox for the instance that you want to delete.
  3. To delete the instance, click More actions, click Delete, and then follow the instructions.

Passaggi successivi

Ora hai visto come installare il server MySQL su Compute Engine. Per visualizzare applicazioni più complesse che utilizzano MySQL, sfoglia la vasta gamma di stack di sviluppo su Cloud Marketplace che utilizzano MySQL.

Se i tuoi requisiti includono alta disponibilità e scalabilità, valuta di installare MySQL Cluster su Compute Engine. MySQL Cluster offre alta disponibilità e scalabilità tramite clustering senza condivisione e suddivisione automatica. Cloud Marketplace offre un'opzione di deployment con un solo clic per Percona, una soluzione open source per il clustering MySQL.

Un'altra soluzione open source per la scalabilità di MySQL è Vitess, che gestisce tutto il traffico del database di YouTube dal 2011. Vitess è adatto per le applicazioni che vengono eseguite in container. Per ulteriori informazioni sull'utilizzo di Vitess in un ambiente containerizzato, consulta Eseguire Vitess su Kubernetes.

Per ulteriori informazioni su MySQL, consulta la documentazione ufficiale di MySQL.

Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Consulta il nostro Cloud Architecture Center.