Cómo configurar MySQL en Google Compute Engine

Last reviewed 2021-11-23 UTC

Tienes varias opciones para implementar MySQL como parte de tu proyecto de Google Cloud. Puedes usar Cloud SQL, Google Cloud Marketplace o instalar MySQL de forma manual en Compute Engine.

Cloud SQL ofrece MySQL como un servicio web. Puedes usar Cloud SQL para alojar tu base de datos MySQL en la nube de Google y permitir que Google Cloud se encargue de tareas administrativas como la replicación, la administración de parches y la administración de bases de datos.

Cloud Marketplace proporciona una interfaz simple de implementación en un clic que facilita la instalación de MySQL en una instancia de Compute Engine. Cloud Marketplace incluye una instalación independiente de MySQL y, también, varias pilas de desarrollo web que usan MySQL, incluidas las pilas LAMP, LEMP y los clústeres de Percona para MySQL.

Si prefieres instalar y personalizar MySQL de forma manual, puedes usar Compute Engine para crear una base de datos de MySQL en cuestión de minutos. En este documento, se ofrece orientación sobre qué opción elegir y se presenta el proceso de instalación manual de una base de datos de MySQL en Compute Engine.

Cómo elegir la opción de implementación de MySQL adecuada

Cloud SQL es una gran opción si deseas que Google Cloud se ocupe de las tareas de administración del servidor y la base de datos de backend. Por ejemplo, Cloud SQL proporciona copias de seguridad automatizadas y recuperación de un momento determinado. Además, tus datos se repiten en varias zonas para mayor disponibilidad y resiliencia.

Se recomienda instalar MySQL en Compute Engine si necesitas una función de MySQL que no es compatible con Cloud SQL. Por ejemplo, Cloud SQL no admite funciones definidas por el usuario ni el privilegio SUPER. Para obtener más información, consulta Preguntas frecuentes de SQL.

Si decides instalar MySQL en Compute Engine, puedes usar Cloud Marketplace para implementar una instalación de MySQL o puedes instalar MySQL de forma manual en una instancia de Compute Engine. Cloud Marketplace proporciona una forma conveniente de implementar MySQL como parte de pilas de desarrollo más grandes. Cloud Marketplace ofrece varias opciones para las instalaciones de MySQL, incluida una instalación independiente de MySQL, pilas LAMP, LEMP y Nginx, una instalación del clúster de Percona para MySQL y muchas otras opciones.

Si las ofertas de Cloud Marketplace no satisfacen tus necesidades, puedes instalar MySQL de forma manual en una instancia de Compute Engine. Te recomendamos, por ejemplo, implementar MySQL en una imagen personalizada que creaste o tener control total sobre el proceso de instalación.

Para instalar MySQL en una instancia de Compute Engine de forma manual, solo necesitas crear una instancia de Compute Engine y, luego, instalar MySQL directamente en la instancia.

Para obtener más información sobre cada opción, consulta los siguientes recursos:

  • Si deseas obtener información sobre Cloud SQL, consulta la documentación de Cloud SQL para MySQL.
  • En Cloud Marketplace, consulta las opciones de instalación de MySQL en la consola de Google Cloud:

    Ir a Cloud Marketplace

  • Para la instalación manual de MySQL en una instancia de Compute Engine, consulta el resto de este documento.

Objetivos

  • Crear una instancia de Compute Engine
  • Instalar MySQL
  • Conectarse a MySQL

Requisitos previos

  1. Crea un proyecto nuevo en la consola de Google Cloud. Puedes usar un proyecto existente, pero crear uno nuevo simplifica la limpieza.

    Puedes completar todos los pasos de este documento mediante la consola de Google Cloud, pero si prefieres usar la CLI de gcloud, sigue estos pasos a fin de habilitar la API de Compute Engine e instalar Google Cloud CLI.

  2. Usa la consola de Google Cloud para habilitar la API de Compute Engine.

  3. Instala la CLI de gcloud

  4. Configura tu lugar de trabajo para que los comandos sean menos detallados. Sustituye los valores de PROJECT_ID REGION y ZONE de tu proyecto en los siguientes comandos. Para ver la lista completa de las zonas, consulta Regiones y zonas disponibles.

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

Cree una instancia de Compute Engine

Crea una instancia de Compute Engine para MySQL y establece una conexión SSH a la instancia recién creada. El sistema operativo predeterminado es Debian versión 10. Si prefieres usar un sistema operativo diferente para este instructivo, puedes elegir entre las opciones descritas en la página de imágenes públicas en la documentación de Compute Engine.

Console

Para crear una instancia de Compute Engine en la consola de Google Cloud, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página Instancias de VM de Compute Engine.

    Ir a Instancias de VM de Compute Engine.

  2. Selecciona el proyecto que acabas de crear y haz clic en Continuar.

  3. Haz clic en Crear instancia (o Nueva instancia si ya tienes instancias). Asigna el nombre mysql-test a la instancia.

  4. Si quieres especificar un sistema operativo distinto del valor predeterminado, en la sección Disco de arranque, haz clic en Cambiar para configurar las propiedades del disco de arranque. En la pestaña Imágenes públicas, selecciona un sistema operativo y, luego, haz clic en Guardar.

  5. Para cumplir con las prácticas recomendadas de seguridad, crea tu instancia sin una dirección IP externa.

    Expande Opciones avanzadas y, luego, Herramientas de redes. En Interfaces de red, expande la interfaz predeterminada y en el menú Dirección IPv4 externa menú selecciona Ninguna.

  6. Haga clic en Crear.

Configura y administra la traducción de direcciones de red con Cloud NAT

  1. En la consola de Google Cloud, ve a la página de Cloud NAT.

    Ir a Cloud NAT

  2. Haz clic en Comenzar o Crear la puerta de enlace NAT.

  3. En Nombre de la puerta de enlace, ingresa nat-simple-configuration.

  4. Para la red de VPC para la puerta de enlace NAT, elige predeterminada.

  5. En Región para la puerta de enlace NAT, elige la región que elegiste antes.

  6. En Cloud Router, seleccione Crear router nuevo.

  7. En el cuadro de diálogo, proporciona un Nombre para el router, nat-router-simple-configuration, y haz clic en Crear.

  8. Haz clic en Configuración avanzada.

  9. En la sección Stackdriver Logging, selecciona Traducción y errores. Esto envía todos los registros a Cloud Logging.

  10. Haga clic en Crear.

Para establecer una conexión SSH:

  1. En la página Instancias de VM, encuentra tu nueva instancia de VM en la lista.

  2. En la columna Conectar, haz clic en SSH. La terminal SSH se abrirá en una ventana del navegador.

gcloud

  1. Para crear una instancia de Compute Engine, usa el comando gcloud compute instances create. Para especificar el sistema operativo, agrega el parámetro --image-family seguido de la familia de imágenes o el parámetro --image seguido del nombre de la imagen para una versión con imágenes específica. Por ejemplo, para usar la imagen más reciente de la familia Debian 10, agrega --image-family debian-10. Cuando usas imágenes públicas, el proyecto de imagen debe proporcionarse con el parámetro --image-project.

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

    gcloud compute routers create nat-router-simple-configuration \
        --network=default
    
  3. Configura y administra la traducción de direcciones de red 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. Conéctate a la instancia mediante ssh.

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

    Las conexiones SSH se realizan a través de la redirección de TCP controlada por Identity-Aware Proxy (IAP).

Instala MySQL

En los siguientes pasos, se describe cómo instalar MySQL en tu instancia de Compute Engine.

Debian 10+

Mediante estas instrucciones, se instalan MySQL 8 o 5.7.

Las versiones 10 y posteriores de Debian contienen MariaDB en lugar de MySQL como parte de sus sistemas de administración de paquetes. MariaDB mantiene la compatibilidad con el protocolo MySQL, pero tiene un conjunto de atributos que evoluciona de forma independiente. Para obtener más detalles, consulta MariaDB frente a MySQL.

Para instalar MySQL, descarga el paquete de versión y realiza la instalación de forma manual con el comando dpkg.

  1. Instala la dependencia wget.

    sudo apt-get install -y wget
    
  2. Descarga el paquete de versiones del servidor de la comunidad de MySQL.

    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 la integridad del archivo de paquete de versiones.

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

    La autenticidad y la integridad del archivo se verifican si ves el resultado siguiente.

    mysql-apt-config_0.8.20-1_all.deb: OK
    
  4. Después de verificar el archivo, agrega el paquete de MySQL al repositorio de paquetes local.

    sudo dpkg -i ${DEB_FILE}
    

    Se te solicitará que confirmes las opciones de instalación, incluida la versión de MySQL.

  5. Con la opción del menú MySQL Server & Cluster seleccionada, presiona la tecla Intro y usa las teclas de flecha para elegir una versión de servidor.

    En esta guía, se espera que elijas MySQL 8.0 o 5.7. Presiona Intro en tu teclado después de seleccionar la versión.

  6. Cuando estés satisfecho con las opciones seleccionadas en el menú de configuración, usa las teclas de flecha para seleccionar Ok en el menú y presiona la tecla Intro en tu teclado.

  7. Actualiza la caché del paquete.

    sudo apt-get update
    

    Si recibes un error de GPG similar a Las siguientes firmas no se pudieron verificar porque la clave pública no está disponible: NO_PUBKEY 467B942D3A79BD29, importa las claves de GPG faltantes con un comando que siga este patrón:

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

    En el mensaje de error de demostración, la clave pública que falta es 467B942D3A79BD29; proporciona este valor con la opción --recv-keys.

    Repite el comando para actualizar la caché del paquete.

  8. Instala MySQL. El proceso de instalación inicia el servicio de MySQL por ti.

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

    Se te pedirá que proporciones algunos detalles para la instalación, como la contraseña raíz.

Debian 9

Mediante estas instrucciones, se instalan MySQL 8 o 5.7.

De forma predeterminada, algunas versiones de Debian, como Debian 9, instalan MariaDB como el servidor de MySQL predeterminado. MariaDB está diseñado para ser altamente compatible con MySQL y puede invocarse mediante los mismos comandos. Para consultar más detalles acerca de las diferencias entre MariaDB y MySQL estándar, consulta Trasladarse de MySQL a MariaDB en Debian 9.

Para instalar MySQL, sigue estas instrucciones:

  1. Descarga el paquete de versiones del servidor de la comunidad de MySQL.

    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 la integridad del archivo de paquete de versiones.

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

    La autenticidad y la integridad del archivo se verifican si ves el resultado siguiente.

    mysql-apt-config_0.8.17-1_all.deb: OK
    
  3. Después de verificar el archivo, agrega el paquete de MySQL al repositorio de paquetes local.

    sudo dpkg -i ${DEB_FILE}
    

    Se te solicitará que confirmes las opciones de instalación, incluida la versión de MySQL.

  4. Con la opción del menú MySQL Server & Cluster seleccionada, presiona la tecla Intro y usa las teclas de flecha para elegir una versión de servidor.

    En esta guía, se espera que elijas MySQL 8.0 o 5.7. Presiona Intro en tu teclado después de seleccionar la versión.

  5. Cuando estés satisfecho con las opciones seleccionadas en el menú de configuración, usa las teclas de flecha para seleccionar Ok en el menú y presiona la tecla Intro en tu teclado.

  6. Actualiza la caché del paquete.

    sudo apt-get update
    

    Si recibes un error de GPG similar a Las siguientes firmas no se pudieron verificar porque la clave pública no está disponible: NO_PUBKEY 467B942D3A79BD29, importa las claves de GPG faltantes con un comando que siga este patrón:

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

    En el mensaje de error de demostración, la clave pública que falta es 467B942D3A79BD29; proporciona este valor con la opción --recv-keys.

    Repite el comando para actualizar la caché del paquete.

  7. Instala MySQL. El proceso de instalación inicia el servicio de MySQL por ti.

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

Ubuntu

Para Ubuntu 1804 y versiones anteriores, con estas instrucciones se instala MySQL 5.7.
Para Ubuntu 2004 y versiones posteriores, con estas instrucciones se instala MySQL 8.

  1. Actualiza el administrador de paquetes apt-get.

    sudo apt-get update
    
  2. Instala MySQL. El proceso de instalación inicia el servicio de MySQL por ti.

    sudo apt-get -y install mysql-server
    
  3. De forma predeterminada en las distribuciones de Ubuntu, mysql autentica al usuario root con el complemento auth_socket. Ejecuta esta consulta para verificar la configuración predeterminada:

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

    El resultado muestra que el usuario root que se conecta desde localhost usará el complemento auth_socket:

    +------+-----------------------+-------------+-----------+
    | user | authentication_string | plugin      | host      |
    +------+-----------------------+-------------+-----------+
    | root |                       | auth_socket | localhost |
    +------+-----------------------+-------------+-----------+
    
  4. Cambia esta configuración y la contraseña raíz por una que sea difícil de adivinar:

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

    El resultado contiene la contraseña raíz nueva:

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

CentOS o RHEL 7

Con estas instrucciones, se instalará MySQL 8.

La versión 7 de CentOS y RHEL contienen MariaDB en lugar de MySQL como parte de sus sistemas de administración de paquetes. Si quieres instalar MySQL, primero debes actualizar el administrador de paquetes.

  1. Descarga el paquete de versiones del servidor de la comunidad de MySQL.

    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 la integridad del archivo de paquete de versiones.

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

    La autenticidad y la integridad del archivo se verifican si ves el resultado siguiente.

    mysql80-community-release-el7-4.noarch.rpm: OK
    
  3. Actualiza el administrador de paquetes para que incluya MySQL.

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

    sudo yum -y install mysql-community-server
    
  5. Inicia el servidor de MySQL.

    sudo /usr/bin/systemctl start mysqld
    
  6. Obtén la contraseña raíz temporal de los registros del servidor

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

Rocky Linux o RHEL 8

Con estas instrucciones, se instalará MySQL 8.

La versión 8 deRocky Linux, CentOS Stream y RHEL contienen MariaDB en lugar de MySQL como parte de su sistema de administración de paquetes. Si quieres instalar MySQL, primero debes actualizar el administrador de paquetes.

  1. Descarga el paquete de versiones del servidor de la comunidad de MySQL.

    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 la integridad del archivo de paquete de versiones.

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

    La autenticidad y la integridad del archivo se verifican si ves el resultado siguiente.

    mysql80-community-release-el8-2.noarch.rpm: OK
    
  3. Actualiza el administrador de paquetes para que incluya MySQL.

    sudo rpm -iUvh ${RPM_FILE}
    
  4. Instala MySQL. Durante la instalación, inhabilita el repositorio de AppStream para que la instalación use el servidor de la comunidad.

    sudo yum module disable -y mysql
    sudo yum install -y \
        --disablerepo=appstream \
      mysql-community-server
    
  5. Inicia el servidor de MySQL.

    sudo /usr/bin/systemctl start mysqld
    
  6. Obtén la contraseña raíz temporal de los registros del servidor

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

Mejora la seguridad en la instalación de MySQL

Para mejorar la seguridad de tu instalación de MySQL, ejecuta el comando mysql_secure_installation. Si no configuraste una contraseña durante el proceso de instalación, créala en este paso. Para obtener más información sobre este comando, consulta mysql_secure_installation en la documentación de MySQL.

sudo mysql_secure_installation

Conéctate a MySQL

En los siguientes pasos, se describe cómo conectarte a MySQL desde tu instancia mysql-test.

MySQL 8.0

  1. Conéctate a MySQL mediante el cliente MySQL.

    sudo mysql -u root -p
    

    Cuando te conectas a MySQL, el mensaje cambia a mysql>.

    Entonces puedes ejecutar comandos de MySQL. Por ejemplo, el comando siguiente muestra los subprocesos en ejecución, incluso la conexión actual.

    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)

    Puedes usar el siguiente comando para generar una lista de usuarios.

    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. Cuando termines de ejecutar comandos, usa el comando exit para salir del cliente MySQL y, luego, usa exit de nuevo a fin de salir de la instancia de Compute Engine.

    mysql> exit
    Bye

MySQL 5.7

  1. Conéctate a MySQL mediante el cliente MySQL.

    sudo mysql -u root -p
    

    Cuando te conectas a MySQL, el mensaje cambia a mysql>.

    Entonces puedes ejecutar comandos de MySQL. Por ejemplo, el comando siguiente muestra los subprocesos en ejecución, incluso la conexión actual.

    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)

    Puedes usar el siguiente comando para generar una lista de usuarios.

    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. Cuando termines de ejecutar comandos, usa el comando exit para salir del cliente MySQL y, luego, usa exit de nuevo a fin de salir de la instancia de Compute Engine.

    mysql> exit
    Bye

Realice una limpieza

Una vez que termines el instructivo, puedes limpiar los recursos que creaste para que dejen de usar la cuota y generar cargos. En las siguientes secciones, se describe cómo borrar o desactivar estos recursos.

Borra el proyecto

La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.

Para borrar el proyecto, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

Borra instancias

Para borrar una instancia de Compute Engine, utiliza lo siguiente:

  1. En la consola de Google Cloud, ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. Selecciona tu instancia en la casilla de verificación de es la instancia que deseas borrar.
  3. Para borrar la instancia, haz clic en Más acciones, haz clic en Borrar y, luego, sigue las instrucciones.

¿Qué sigue?

Ya viste cómo instalar un servidor de MySQL en Compute Engine. Para obtener información sobre aplicaciones más complejas que usan MySQL, consulta la amplia variedad de pilas de desarrollo disponibles en Cloud Marketplace que usan MySQL.

Si tus requisitos incluyen disponibilidad y escalabilidad altas, considera instalar MySQL Cluster en Compute Engine. El clúster de MySQL proporciona alta disponibilidad y escalabilidad mediante agrupamiento en clústeres que no comparten nada y fragmentación automática. Cloud Marketplace proporciona una opción con implementación en un clic para Percona, una solución de código abierto que se puede aplicar al agrupamiento en clústeres de MySQL.

Otra solución de código abierto para la escalabilidad en MySQL es Vitess, que entrega todo el tráfico de base de datos de YouTube desde 2011. Vitess es ideal para aplicaciones que se ejecutan en contenedores. Para obtener más información acerca de cómo usar Vitess en un entorno en contenedores, consulta Ejecuta Vitess en Kubernetes.

Para obtener más información acerca de MySQL, consulta la documentación oficial de MySQL.

Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.