Configurer MySQL sur Google Compute Engine

Vous disposez de plusieurs options pour déployer MySQL dans le cadre de votre projet Google Cloud. Vous pouvez utiliser Cloud SQL, Google Cloud Marketplace ou installer manuellement MySQL sur Compute Engine.

Cloud SQL propose MySQL en tant que service Web. Vous pouvez utiliser Cloud SQL pour héberger votre base de données MySQL dans le cloud de Google, en laissant Google Cloud gérer les tâches d'administration telles que la réplication, la gestion des correctifs et la gestion des bases de données.

Cloud Marketplace fournit une interface de déploiement par clic qui facilite l'installation de MySQL sur une instance Compute Engine. Cloud Marketplace comprend non seulement une installation MySQL autonome, mais aussi plusieurs piles de développement Web utilisant MySQL, y compris des piles LAMP, LEMP et des clusters MySQL Percona.

Si vous préférez installer et personnaliser manuellement MySQL, vous pouvez utiliser Compute Engine pour créer une base de données MySQL en quelques minutes. Ce document fournit des conseils sur l'option à choisir et décrit l'installation manuelle d'une base de données MySQL sur Compute Engine.

Choisir la bonne option de déploiement de MySQL

Cloud SQL est une excellente option si vous souhaitez que Google Cloud s'occupe de la base de données backend et des tâches d'administration du serveur. Par exemple, Cloud SQL fournit des fonctionnalités automatisées de sauvegarde et de récupération à un moment précis. De plus, vos données sont répliquées dans plusieurs zones pour plus de disponibilité et de résilience.

Vous préférerez peut-être installer MySQL sur Compute Engine si vous avez besoin d'une fonctionnalité MySQL qui n'est pas compatible avec Cloud SQL. Par exemple, Cloud SQL n'est pas compatible avec les fonctions définies par l'utilisateur ni avec le privilège SUPER. Pour plus d'informations, consultez les questions fréquentes sur Cloud SQL.

Si vous décidez d'installer MySQL sur Compute Engine, vous pouvez utiliser Cloud Marketplace pour déployer une installation MySQL ou installer manuellement MySQL sur une instance Compute Engine. Cloud Marketplace offre un moyen pratique de déployer MySQL dans le cadre de piles de développement plus importantes. Cloud Marketplace propose plusieurs options d'installation de MySQL, dont une installation MySQL autonome, des piles LAMP, LEMP et Nginx, une installation de cluster Percona MySQL et plusieurs autres options.

Si les offres Cloud Marketplace ne répondent pas à vos besoins, vous pouvez installer MySQL manuellement sur une instance Compute Engine. Par exemple, vous pourriez avoir pour objectif de déployer MySQL sur une image personnalisée que vous avez créée, ou bien de disposer d'un contrôle complet sur le processus d'installation.

Pour installer MySQL manuellement sur une instance Compute Engine, il vous suffit de créer l'instance et d'installer MySQL directement sur celle-ci. Ce processus est décrit dans le reste de ce document.

Objectifs

  • Créer une instance Compute Engine
  • Installer MySQL
  • Se connecter à MySQL

Prérequis

  1. Créez un projet dans Google Cloud Console. Vous pouvez bien sûr utiliser un projet existant, mais les opérations de nettoyage seront bien plus faciles si vous créez un projet spécifique.

    Vous pouvez suivre toutes les étapes de ce document à l'aide de Google Cloud Console, mais si vous préférez utiliser gcloud CLI, procédez comme suit pour activer l'API Compute Engine et installer Google Cloud CLI.

  2. Utilisez Google Cloud Console pour activer l'API Compute Engine.

  3. Installer gcloud CLI

  4. Configurez votre espace de travail de façon à pouvoir alléger la syntaxe des commandes. Remplacez PROJECT_ID et ZONE par les valeurs correspondant à votre projet dans les commandes ci-dessous. Pour obtenir la liste complète des zones, reportez-vous à la section Régions et zones disponibles.

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

Créer une instance Compute Engine

Créez une instance Compute Engine pour MySQL, puis établissez une connexion SSH avec cette nouvelle instance. Le système d'exploitation par défaut est Debian version 10. Si vous préférez utiliser un autre système d'exploitation pour ce tutoriel, vous pouvez choisir l'une des options décrites sur la page Images publiques de la documentation de Compute Engine.

Console

Pour créer une instance Compute Engine dans Google Cloud Console, procédez comme suit :

  1. Ouvrez Google Cloud Console.

  2. Sélectionnez le projet que vous venez de créer et cliquez sur Continuer.

  3. Cliquez sur Créer une instance (ou sur Nouvelle instance si vous disposez déjà d'instances). Nommez l'instance mysql-test.

  4. Pour spécifier un système d'exploitation autre que la valeur par défaut, dans la section Disque de démarrage, cliquez sur Modifier afin de configurer les propriétés du disque de démarrage. Dans l'onglet Images publiques, sélectionnez un système d'exploitation, puis cliquez sur Enregistrer.

  5. Cliquez sur Créer.

Pour établir une connexion SSH :

  1. Sur la page Instances de VM, localisez votre nouvelle instance de VM dans la liste.

  2. Dans la colonne Connecter, cliquez sur SSH. Le terminal SSH s'ouvre dans une fenêtre de navigateur.

gcloud

  1. Pour créer une instance Compute Engine, utilisez la commande gcloud compute instances create. Pour spécifier le système d'exploitation, ajoutez le paramètre --image-family suivi de la famille d'images ou du paramètre --image suivi du nom de l'image pour une version d'image spécifique. Par exemple, pour utiliser l'image la plus récente de la famille Debian 10, ajoutez --image-family debian-10. Lorsque vous utilisez des images publiques, le projet de l'image doit être fourni à l'aide du paramètre --image-project.

    gcloud compute instances create \
        --image-family debian-10 \
        --image-project debian-cloud \
        --no-address \
      mysql-test
    

    Pour respecter les bonnes pratiques concernant la sécurité, l'option --no-address crée cette instance sans adresse IP externe.

  2. Connectez-vous à l'instance via ssh.

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

    Les connexions SSH sont établies via un transfert TCP géré par Identity-Aware Proxy (IAP).

Installer MySQL

La procédure décrite ci-dessous permet d'installer MySQL sur votre instance Compute Engine.

Debian 10+

Ces instructions permettent d'installer MySQL 8 ou 5.7.

Les versions 10 et ultérieures de Debian contiennent MariaDB plutôt que MySQL dans le système de gestion de packages. MariaDB conserve la compatibilité avec le protocole MySQL, mais possède un ensemble de fonctionnalités en constante évolution. Pour plus de détails, consultez la section MariaDB/MySQL.

Pour installer MySQL, téléchargez le package de version et installez-le manuellement à l'aide de la commande dpkg.

  1. Installez la dépendance wget.

    sudo apt-get install -y wget
    
  2. Téléchargez le package de version de 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. Vérifiez l'intégrité du fichier de package de version.

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

    L'authenticité et l'intégrité du fichier sont validées si le résultat suivant s'affiche.

    mysql-apt-config_0.8.20-1_all.deb: OK
    
  4. Après avoir vérifié le fichier, ajoutez le package MySQL au dépôt de packages local.

    sudo dpkg -i ${DEB_FILE}
    

    Vous êtes invité à confirmer les options d'installation, y compris la version de MySQL.

  5. Lorsque l'option supérieure du menu Serveur et cluster MySQL est sélectionnée, appuyez sur la touche Retour puis utilisez les touches fléchées pour choisir une version de serveur.

    Ce guide suppose que vous optez pour MySQL 8.0 ou 5.7. Après avoir sélectionné la version, appuyez sur la touche Retour de votre clavier.

  6. Lorsque vous êtes satisfait des options sélectionnées dans le menu de configuration, utilisez les touches fléchées pour sélectionner Ok dans le menu et appuyez sur la touche Retour de votre clavier.

  7. Mettez à jour le cache du package.

    sudo apt-get update
    
  8. Installez MySQL. Le processus d'installation démarre automatiquement le service MySQL.

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

    Vous êtes invité à fournir des détails comme le mot de passe racine pour l'installation.

Debian 9

Ces instructions permettent d'installer MySQL 8 ou 5.7.

Par défaut, certaines versions de Debian, telles que Debian 9, installent MariaDB en tant que serveur MySQL par défaut. MariaDB est conçu pour être compatible avec MySQL et peut être appelé à l'aide des mêmes commandes. Pour plus de détails sur les différences entre MariaDB et MySQL standard, consultez la page Passer de MySQL à MariaDB dans Debian 9.

Pour installer MySQL, procédez comme suit :

  1. Téléchargez le package de version de 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. Vérifiez l'intégrité du fichier de package de version.

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

    L'authenticité et l'intégrité du fichier sont validées si le résultat suivant s'affiche.

    mysql-apt-config_0.8.17-1_all.deb: OK
    
  3. Après avoir vérifié le fichier, ajoutez le package MySQL au dépôt de packages local.

    sudo dpkg -i ${DEB_FILE}
    

    Vous êtes invité à confirmer les options d'installation, y compris la version de MySQL.

  4. Lorsque l'option supérieure du menu Serveur et cluster MySQL est sélectionnée, appuyez sur la touche Retour puis utilisez les touches fléchées pour choisir une version de serveur.

    Ce guide suppose que vous optez pour MySQL 8.0 ou 5.7. Après avoir sélectionné la version, appuyez sur la touche Retour de votre clavier.

  5. Lorsque vous êtes satisfait des options sélectionnées dans le menu de configuration, utilisez les touches fléchées pour sélectionner Ok dans le menu et appuyez sur la touche Retour de votre clavier.

  6. Mettez à jour le cache du package.

    sudo apt-get update
    
  7. Installez MySQL. Le processus d'installation démarre automatiquement le service MySQL.

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

Ubuntu

Pour Ubuntu 1804 et versions antérieures, ces instructions installent MySQL 5.7.
Pour Ubuntu 2004 et versions ultérieures, suivez ces instructions pour installer MySQL 8.

  1. Mettez à jour le gestionnaire de packages apt-get.

    sudo apt-get update
    
  2. Installez MySQL. Le processus d'installation démarre automatiquement le service MySQL.

    sudo apt-get -y install mysql-server
    
  3. Par défaut, dans les distributions Ubuntu, mysql authentifie l'utilisateur root avec le plug-in auth_socket. Exécutez la requête suivante pour vérifier cette configuration par défaut :

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

    Le résultat indique que l'utilisateur root se connectant depuis localhost utilisera le plug-in auth_socket :

    +------+-----------------------+-------------+-----------+
    | user | authentication_string | plugin      | host      |
    +------+-----------------------+-------------+-----------+
    | root |                       | auth_socket | localhost |
    +------+-----------------------+-------------+-----------+
    
  4. Modifiez ce paramètre et remplacez le mot de passe racine par un mot de passe difficile à deviner :

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

    Le résultat contient le nouveau mot de passe racine :

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

CentOS ou RHEL 7

Ces instructions installent MySQL 8.

La version 7 de CentOS et RHEL propose MariaDB au lieu de MySQL dans son système de gestion de packages. Avant d'installer MySQL, vous devez mettre à jour le gestionnaire de packages.

  1. Téléchargez le package de version de 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. Vérifiez l'intégrité du fichier de package de version.

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

    L'authenticité et l'intégrité du fichier sont validées si le résultat suivant s'affiche.

    mysql80-community-release-el7-4.noarch.rpm: OK
    
  3. Mettez à jour le gestionnaire de packages pour inclure MySQL.

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

    sudo yum -y install mysql-community-server
    
  5. Démarrez le serveur MySQL.

    sudo /usr/bin/systemctl start mysqld
    
  6. Obtenez le mot de passe racine temporaire à partir des journaux du serveur.

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

Rocky Linux ou RHEL 8

Ces instructions installent MySQL 8.

La version 8 de Rocky Linux, CentOS Stream et RHEL contient MariaDB au lieu de MySQL dans son système de gestion de packages. Avant d'installer MySQL, vous devez mettre à jour le gestionnaire de packages.

  1. Téléchargez le package de version de 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. Vérifiez l'intégrité du fichier de package de version.

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

    L'authenticité et l'intégrité du fichier sont validées si le résultat suivant s'affiche.

    mysql80-community-release-el8-2.noarch.rpm: OK
    
  3. Mettez à jour le gestionnaire de packages pour inclure MySQL.

    sudo rpm -iUvh ${RPM_FILE}
    
  4. Installez MySQL. Pendant l'installation, désactivez le dépôt AppStream afin que l'installation utilise le serveur communautaire.

    sudo yum module disable -y mysql
    sudo yum install -y \
        --disablerepo=appstream \
      mysql-community-server
    
  5. Démarrez le serveur MySQL.

    sudo /usr/bin/systemctl start mysqld
    
  6. Obtenez le mot de passe racine temporaire à partir des journaux du serveur.

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

Améliorer la sécurité de l'installation de MySQL

Pour améliorer la sécurité de votre installation MySQL, exécutez la commande mysql_secure_installation. Si vous n'avez pas défini de mot de passe au cours du processus d'installation, créez-en un à cette étape. Pour plus d'informations sur cette commande, consultez la section mysql_secure_installation de la documentation MySQL.

sudo mysql_secure_installation

Se connecter à MySQL

Les étapes qui suivent montrent comment se connecter à MySQL à partir de votre instance mysql-test.

MySQL 8.0

  1. Connectez-vous à MySQL en utilisant le client MySQL.

    sudo mysql -u root -p
    

    Lorsque vous vous connectez à MySQL, l'invite devient mysql>.

    Vous pouvez alors exécuter des commandes MySQL. Par exemple, la commande suivante affiche les threads en cours d'exécution, y compris la connexion en cours.

    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)

    La commande suivante vous permet de générer la liste des utilisateurs.

    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. Une fois l'exécution des commandes terminée, utilisez la commande exit pour quitter le client MySQL, puis à nouveau exit pour vous déconnecter de l'instance Compute Engine.

    mysql> exit
    Bye

MySQL 5.7

  1. Connectez-vous à MySQL en utilisant le client MySQL.

    sudo mysql -u root -p
    

    Lorsque vous vous connectez à MySQL, l'invite devient mysql>.

    Vous pouvez alors exécuter des commandes MySQL. Par exemple, la commande suivante affiche les threads en cours d'exécution, y compris la connexion en cours.

    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)

    La commande suivante vous permet de générer la liste des utilisateurs.

    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. Une fois l'exécution des commandes terminée, utilisez la commande exit pour quitter le client MySQL, puis à nouveau exit pour vous déconnecter de l'instance Compute Engine.

    mysql> exit
    Bye

Nettoyer

Une fois le tutoriel terminé, vous pouvez procéder au nettoyage des ressources que vous avez créées afin qu'elles ne soient plus comptabilisées dans votre quota et qu'elles ne vous soient plus facturées. Dans les sections suivantes, nous allons voir comment supprimer ou désactiver ces ressources.

Supprimer le projet

Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.

Pour supprimer le projet :

  1. Dans la console, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Supprimer des instances

Pour supprimer une instance Compute Engine, procédez comme suit :

  1. Dans la console, accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Cochez la case correspondant à instance que vous souhaitez supprimer.
  3. Pour supprimer l'instance, cliquez sur Autres actions , cliquez sur Supprimer, puis suivez les instructions.

Étape suivante

Vous savez maintenant comment installer le serveur MySQL sur Compute Engine. Pour découvrir des applications plus complexes utilisant MySQL, parcourez la grande variété de piles de développement proposées sur Cloud Marketplace.

Si vos besoins incluent haute disponibilité et évolutivité, envisagez d'installer MySQL Cluster sur Compute Engine. MySQL Cluster offre une disponibilité et une évolutivité élevées grâce au clustering sans partage et à la segmentation automatique des données. Cloud Marketplace propose une option de déploiement par clic pour Percona, une solution Open Source de clustering MySQL.

Une autre solution Open Source dédiée à l’évolutivité de MySQL est Vitess, qui dessert l’ensemble du trafic de base de données de YouTube depuis 2011. Vitess est parfaitement adapté aux applications exécutées dans des conteneurs. Pour en savoir plus sur l'utilisation de Vitess dans un environnement en conteneurs, consultez la page sur l'exécution de Vitess sur Kubernetes.

Pour plus d'informations sur MySQL, reportez-vous à la documentation officielle de MySQL.

Découvrez des architectures de référence, des schémas, des tutoriels et des bonnes pratiques concernant Google Cloud. Consultez notre Centre d'architecture cloud.