Instalar MySQL en Compute Engine


Para instalar MySQL manualmente en una instancia de Compute Engine que hayas creado, sigue estos pasos.

Para ver un resumen de las distintas opciones para configurar MySQL en Compute Engine, consulta MySQL en Compute Engine. Para saber qué ofertas de Compute Engine son adecuadas para MySQL, consulta el artículo Configurar MySQL en Compute Engine.

Antes de empezar

  • Usa la consola para activar la API Compute Engine. Google Cloud
  • Instala Google Cloud CLI.
  • Configura tu espacio de trabajo para que los comandos sean menos detallados. Sustituye los valores de tu proyecto por PROJECT_ID, REGION y ZONE en los siguientes comandos. Para ver la lista completa de zonas, consulta Regiones y zonas disponibles.

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

Crear una instancia de Compute Engine y establecer una conexión SSH

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

Consola

Crear la instancia de Compute Engine

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

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

    Ve a las 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 (Nueva instancia si ya tienes alguna). Asigna el nombre mysql-test a la instancia.

  4. Selecciona el nivel de rendimiento y el tamaño del disco.

  5. Para 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, a continuación, haz clic en Guardar.

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

    Expande Opciones avanzadas y, a continuación, Redes. En Interfaces de red, despliega la interfaz predeterminada y, en el menú Dirección IPv4 externa, selecciona Ninguna.

  7. Haz clic en Crear.

Configurar la traducción de direcciones de red

Para configurar y gestionar la traducción de direcciones de red con Cloud NAT, haz lo siguiente:

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

    Ir a Cloud NAT

  2. Haz clic en Empezar o en Crear pasarela de Cloud NAT.

  3. En Nombre de la pasarela, introduce nat-simple-configuration.

  4. Para seleccionar el Cloud Router, en la sección Seleccionar Cloud Router, haz lo siguiente:

    1. En Red, selecciona predeterminada.
    2. En Región, selecciona la región que hayas especificado para tu VM.
    3. En Cloud Router, selecciona Crear router.

      En el cuadro de diálogo Crear un router que aparece, indica un Nombre para el router (por ejemplo, nat-router-simple-configuration) y haz clic en Crear.

  5. Haz clic en Configuraciones avanzadas.

  6. En la sección Registro, selecciona Traducción y errores. Este ajuste configura Cloud NAT para enviar todos los registros a Cloud Logging.

  7. Haz clic en Crear.

Establecer una conexión SSH con la VM

Para establecer una conexión SSH, sigue estos pasos:

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

  2. En la columna Conectar de esa VM, haz clic en SSH. El terminal SSH se abre 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, añade el parámetro --image-family seguido de la familia de imágenes o el parámetro --image seguido del nombre de la imagen de una versión específica de la imagen. Por ejemplo, para usar la imagen más reciente de la familia Debian 10, añade --image-family debian-10. Cuando se usan imágenes públicas, el proyecto de imagen se debe proporcionar mediante el parámetro --image-project.

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

    gcloud compute routers create nat-router-simple-configuration \
        --network=default
    
  3. Configura y gestiona 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
    

    La conexión SSH se realiza mediante el reenvío de TCP, que gestiona Identity-Aware Proxy (IAP).

Instalar MySQL

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

Debian 10 o versiones posteriores

En estas instrucciones se explica cómo instalar MySQL 8 o 5.7.

Las versiones 10 y posteriores de Debian contienen MariaDB en lugar de MySQL como parte de su sistema de gestión de paquetes. MariaDB mantiene la compatibilidad con el protocolo MySQL, pero tiene un conjunto de funciones que evoluciona de forma independiente. Para obtener más información, consulta MariaDB y MySQL.

Para instalar MySQL, descarga el paquete de lanzamiento e instálalo manualmente con el comando dpkg.

  1. Instala la dependencia wget.

    sudo apt-get install -y wget
    
  2. Descarga el paquete de lanzamiento 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. Verifica la integridad del archivo del paquete de lanzamiento.

    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 siguiente resultado:

    mysql-apt-config_0.8.20-1_all.deb: OK
    
  4. Una vez que hayas verificado el archivo, añade el paquete MySQL al repositorio de paquetes local.

    sudo dpkg -i ${DEB_FILE}
    

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

  5. Con la opción de menú superior Servidor y clúster de MySQL seleccionada, pulsa Retorno y, a continuación, usa las teclas de flecha para elegir una versión del servidor.

    En esta guía se presupone que eliges MySQL 8.0 o 5.7. Pulsa Intro en el teclado después de seleccionar la versión.

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

  7. Actualiza la caché de paquetes.

    sudo apt-get update
    

    Si recibes un error de GPG similar a No se han podido verificar las siguientes firmas porque no está disponible la clave pública: NO_PUBKEY 467B942D3A79BD29, importa las claves de GPG que faltan 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 ejemplo, la clave pública que falta es 467B942D3A79BD29. Proporcione este valor con la opción --recv-keys.

    Repite el comando para actualizar la caché de paquetes.

  8. Instala MySQL. El proceso de instalación inicia el servicio MySQL automáticamente.

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

    Se te pedirá que proporciones algunos detalles para la instalación, como la contraseña de administrador.

Debian 9

En estas instrucciones se explica cómo instalar MySQL 8 o 5.7.

De forma predeterminada, algunas versiones de Debian, como Debian 9, instalan MariaDB como servidor MySQL predeterminado. MariaDB se ha diseñado para que sea compatible en gran medida con MySQL y se puede invocar con los mismos comandos. Para obtener información detallada sobre las diferencias entre MariaDB y MySQL estándar, consulta el artículo Moving from MySQL to MariaDB in Debian 9 (Migrar de MySQL a MariaDB en Debian 9).

Para instalar MySQL, sigue estas instrucciones:

  1. Descarga el paquete de lanzamiento 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. Verifica la integridad del archivo del paquete de lanzamiento.

    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 siguiente resultado.

    mysql-apt-config_0.8.17-1_all.deb: OK
    
  3. Una vez que hayas verificado el archivo, añade el paquete MySQL al repositorio de paquetes local.

    sudo dpkg -i ${DEB_FILE}
    

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

  4. Con la opción de menú superior Servidor y clúster de MySQL seleccionada, pulsa Retorno y, a continuación, usa las teclas de flecha para elegir una versión del servidor.

    En esta guía se presupone que eliges MySQL 8.0 o 5.7. Pulsa Intro en el teclado después de seleccionar la versión.

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

  6. Actualiza la caché de paquetes.

    sudo apt-get update
    

    Si recibes un error de GPG similar a No se han podido verificar las siguientes firmas porque no está disponible la clave pública: NO_PUBKEY 467B942D3A79BD29, importa las claves de GPG que faltan 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 ejemplo, la clave pública que falta es 467B942D3A79BD29. Proporcione este valor con la opción --recv-keys.

    Repite el comando para actualizar la caché de paquetes.

  7. Instala MySQL. El proceso de instalación inicia el servicio MySQL automáticamente.

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

Ubuntu

En Ubuntu 1804 y versiones anteriores, estas instrucciones instalan MySQL 5.7.
En Ubuntu 2004 y versiones posteriores, estas instrucciones instalan MySQL 8.

  1. Actualiza el gestor de paquetes apt-get.

    sudo apt-get update
    
  2. Instala MySQL. El proceso de instalación inicia el servicio MySQL automáticamente.

    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 esta 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 este ajuste 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 nueva contraseña de root:

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

CentOS o RHEL 7

Estas instrucciones instalan MySQL 8.

Las versiones 7 de CentOS y RHEL contienen MariaDB en lugar de MySQL como parte de su sistema de gestión de paquetes. Para instalar MySQL, primero debes actualizar el gestor de paquetes.

  1. Descarga el paquete de lanzamiento 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. Verifica la integridad del archivo del paquete de lanzamiento.

    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 siguiente resultado.

    mysql80-community-release-el7-4.noarch.rpm: OK
    
  3. Actualiza el gestor de paquetes para incluir MySQL.

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

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

    sudo /usr/bin/systemctl start mysqld
    
  6. Obtener 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

Estas instrucciones instalan MySQL 8.

La versión 8 de Rocky Linux, CentOS Stream y RHEL contiene MariaDB en lugar de MySQL como parte de su sistema de gestión de paquetes. Para instalar MySQL, primero debes actualizar el gestor de paquetes.

  1. Descarga el paquete de lanzamiento 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. Verifica la integridad del archivo del paquete de lanzamiento.

    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 siguiente resultado.

    mysql80-community-release-el8-2.noarch.rpm: OK
    
  3. Actualiza el gestor de paquetes para incluir MySQL.

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

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

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

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

Mejorar la seguridad de la instalación de MySQL

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

sudo mysql_secure_installation

Conectarse a MySQL

En los siguientes pasos se describe cómo conectarse a MySQL desde su instancia de mysql-test.

MySQL 8.0

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

    sudo mysql -u root -p
    

    Cuando te conectes a MySQL, el prompt cambiará a mysql>.

    Después, puedes ejecutar comandos de MySQL. Por ejemplo, el siguiente comando muestra los subprocesos en ejecución, incluida 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 hayas terminado de ejecutar comandos, usa el comando exit para salir del cliente de MySQL y, a continuación, vuelve a usar exit para cerrar la sesión de la instancia de Compute Engine.

    mysql> exit
    Bye

MySQL 5.7

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

    sudo mysql -u root -p
    

    Cuando te conectes a MySQL, el prompt cambiará a mysql>.

    Después, puedes ejecutar comandos de MySQL. Por ejemplo, el siguiente comando muestra los subprocesos en ejecución, incluida 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 hayas terminado de ejecutar comandos, usa el comando exit para salir del cliente de MySQL y, a continuación, vuelve a usar exit para cerrar la sesión de la instancia de Compute Engine.

    mysql> exit
    Bye

Siguientes pasos

  • Para obtener más información sobre MySQL, consulta la documentación oficial de MySQL.
  • Descubre la gran variedad de pilas de desarrollo de Cloud Marketplace que usan MySQL.
  • Si necesitas alta disponibilidad y escalabilidad, considera las siguientes opciones:
    • Instala MySQL Cluster en Compute Engine para disfrutar de alta disponibilidad y escalabilidad mediante clústeres sin recursos compartidos y partición automática.
    • Haz clic para desplegar Percona, una solución de código abierto para la agrupación en clúster de MySQL, desde Cloud Marketplace.
    • Instala Vitess, la solución de código abierto que ha gestionado todo el tráfico de la base de datos de YouTube desde el 2011. Vitess es adecuado para aplicaciones que se ejecutan en contenedores. Para obtener información sobre cómo usar Vitess en un entorno contenedorizado, consulta Ejecutar Vitess en Kubernetes.