Instala MySQL en Compute Engine


Para instalar MySQL en una instancia de Compute Engine que creaste, completa los siguientes pasos.

Para obtener una descripción general de varias opciones para configurar MySQL en Compute Engine, consulta MySQL en Compute Engine. Para obtener información sobre qué ofertas de Compute Engine son adecuadas para MySQL, consulta Cómo configurar MySQL en Compute Engine.

Antes de comenzar

  • Usa la consola de Google Cloud para activar la API de Compute Engine.
  • Instala Google Cloud CLI.
  • 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
    

Crea una instancia de Compute Engine y establece una conexión SSH

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

Crea la instancia de Compute Engine

Para crear la instancia de Compute Engine en Google Cloud console, 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. Selecciona tu nivel de rendimiento y ajusta el tamaño del disco.

  5. 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.

  6. 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, selecciona Ninguna.

  7. Haz clic en Crear.

Configura la traducción de direcciones de red

Para configurar y administrar 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 Comenzar o Crear la puerta de enlace NAT.

  3. En Nombre de la puerta de enlace, ingresa 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 especificaste para tu VM.
    3. En Cloud Router, selecciona Crear router nuevo.

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

  5. Haz clic en Configuración avanzada.

  6. En la sección Registro, selecciona Traducción y errores. Esta configuración configura Cloud NAT para que envíe todos los registros a Cloud Logging.

  7. Haz clic en Crear.

Establece una conexión SSH a la VM

Para establecer una conexión SSH, haz lo siguiente:

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

  2. En la columna Conectar de esa VM, 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.

    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
    

    La conexión SSH se realiza mediante el reenvío de TCP controlado 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 siguiente resultado:

    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

¿Qué sigue?

  • Para obtener más información acerca de MySQL, consulta la documentación oficial de MySQL.
  • Explora la amplia variedad de pilas de desarrollo disponibles en Cloud Marketplace que usan MySQL.
  • Si tus requisitos incluyen disponibilidad y escalabilidad altas, considera las siguientes opciones:
    • Instala MySQL Cluster en Compute Engine para obtener alta disponibilidad y escalabilidad mediante el agrupamiento en clústeres que no comparten nada y la fragmentación automática.
    • Haz clic para implementar Percona, una solución de código abierto para el agrupamiento en clústeres de MySQL, desde Cloud Marketplace.
    • Instala Vitess, la solución de código abierto que entrega todo el tráfico de la base de datos de YouTube desde 2011. Vitess es ideal para aplicaciones que se ejecutan en contenedores. Para obtener información sobre el uso de Vitess en un entorno en contenedores, consulta Ejecuta Vitess en Kubernetes.