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
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:
En la Google Cloud consola, ve a la página Instancias de VM de Compute Engine.
Selecciona el proyecto que acabas de crear y haz clic en Continuar.
Haz clic en Crear instancia (Nueva instancia si ya tienes alguna). Asigna el nombre mysql-test a la instancia.
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.
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.
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:
En la Google Cloud consola, ve a la página Cloud NAT.
Haz clic en Empezar o en Crear pasarela de Cloud NAT.
En Nombre de la pasarela, introduce
nat-simple-configuration
.Para seleccionar el Cloud Router, en la sección Seleccionar Cloud Router, haz lo siguiente:
- En Red, selecciona predeterminada.
- En Región, selecciona la región que hayas especificado para tu VM.
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.
Haz clic en Configuraciones avanzadas.
En la sección Registro, selecciona Traducción y errores. Este ajuste configura Cloud NAT para enviar todos los registros a Cloud Logging.
Haz clic en Crear.
Establecer una conexión SSH con la VM
Para establecer una conexión SSH, sigue estos pasos:
En la página Instancias de VM, busca la nueva instancia de VM en la lista.
En la columna Conectar de esa VM, haz clic en SSH. El terminal SSH se abre en una ventana del navegador.
gcloud
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
Crea un router de Cloud Router.
gcloud compute routers create nat-router-simple-configuration \ --network=default
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
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
.
Instala la dependencia
wget
.sudo apt-get install -y wget
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}
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
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.
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.
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.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.
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:
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}
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
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.
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.
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.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.
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.
Actualiza el gestor de paquetes
apt-get
.sudo apt-get update
Instala MySQL. El proceso de instalación inicia el servicio MySQL automáticamente.
sudo apt-get -y install mysql-server
De forma predeterminada, en las distribuciones de Ubuntu, MySQL autentica al usuario
root
con el complementoauth_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 desdelocalhost
usará el complementoauth_socket
:+------+-----------------------+-------------+-----------+ | user | authentication_string | plugin | host | +------+-----------------------+-------------+-----------+ | root | | auth_socket | localhost | +------+-----------------------+-------------+-----------+
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.
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}
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
Actualiza el gestor de paquetes para incluir MySQL.
sudo rpm -Uvh ${RPM_FILE}
Instala MySQL.
sudo yum -y install mysql-community-server
Inicia el servidor MySQL.
sudo /usr/bin/systemctl start mysqld
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.
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}
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
Actualiza el gestor de paquetes para incluir MySQL.
sudo rpm -iUvh ${RPM_FILE}
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
Inicia el servidor MySQL.
sudo /usr/bin/systemctl start mysqld
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
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)
Cuando hayas terminado de ejecutar comandos, usa el comando
exit
para salir del cliente de MySQL y, a continuación, vuelve a usarexit
para cerrar la sesión de la instancia de Compute Engine.mysql> exit
Bye
MySQL 5.7
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)
Cuando hayas terminado de ejecutar comandos, usa el comando
exit
para salir del cliente de MySQL y, a continuación, vuelve a usarexit
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.