Conecta un cliente MySQL desde Compute Engine

En esta página se describe cómo usar el cliente MySQL, instalado en una instancia de Compute Engine, con el fin de conectarlo a Cloud SQL.

Puedes usar una IP privada, una IP pública, el proxy de Cloud SQL o la imagen del Docker del proxy.

Antes de comenzar

Antes de que puedas conectarte a tu instancia de Cloud SQL, debes tener un usuario (raíz) de base de datos predeterminado en la instancia.

Esta tarea no incluye instrucciones para configurar la instancia de Compute Engine. Si necesitas ayuda para crear y configurar una instancia de Compute Engine, consulta la documentación de Compute Engine.

IP privada

A fin de conectarte a Cloud SQL desde una instancia de Compute Engine con una IP privada, el acceso a servicios privados debe estar configurado para tu entorno y la instancia de Cloud SQL debe estar configurada para usar una IP privada. La instancia de Compute Engine debe estar en la misma región que la instancia de Cloud SQL y en la red configurada para una conexión privada. >Obtén más información.

1. Configura tu instancia para que utilice una IP privada.

Usa las instrucciones de la página sobre cómo configurar la conectividad de IP privada.

2. Abre una conexión terminal en tu instancia de Compute Engine.

Sigue las instrucciones correspondientes según el sistema operativo de la instancia:

Si tu instancia de Compute Engine ejecuta una imagen pública CentOS o RHEL, es posible que SELinux bloquee la conexión del proxy. Si esto sucede, debes configurar la función SELinux para permitir la conexión.

Si deseas obtener más información sobre SELinux para RHEL, consulta la documentación de RHEL. Si deseas obtener más información sobre SELinux para CentOS, consulta la documentación de CentOS.

3. Instala el cliente MySQL en la instancia de Compute Engine, si todavía no está instalado.

Debian/Ubuntu

Instala el cliente MySQL desde el administrador de paquetes:

sudo apt-get update
sudo apt-get install mariadb-server-10.3

CentOS/RHEL

Instala el cliente MySQL desde el administrador de paquetes:

sudo yum install mysql

openSUSE

Instala el cliente MySQL desde el administrador de paquetes:

sudo zypper install mysql-server

Otras plataformas

  1. Descarga el servidor de la comunidad de MySQL para tu plataforma desde la página de descarga del servidor de la comunidad de MySQL.
    El servidor de la comunidad incluye el cliente MySQL.
  2. Instala el servidor de la comunidad con las instrucciones que se muestran en la página de descargas.

Para obtener más información sobre cómo instalar MySQL, consulta el manual de referencia de MySQL: Instala y actualiza MySQL.

4. Conéctate con el cliente MySQL.

mysql --host=[CLOUD_SQL_PRIVATE_IP_ADDR] --user=root --password

IP pública

Para conectarte mediante una IP pública, sigue estos pasos:

1. Agrega una dirección IPv4 estática a la instancia de Compute Engine si no tiene una.

No puedes conectarte a Compute Engine con IPv6. Para obtener más información sobre cómo agregar una dirección IP estática, consulta Reserva una nueva dirección IP externa estática en la documentación de Compute Engine.

2. Autoriza la dirección IP estática de la instancia de Compute Engine como una red para que se pueda conectar a tu instancia de Cloud SQL.

Si quieres obtener más información, consulta Configura el acceso para conexiones IP públicas.

3. Abre una conexión terminal en tu instancia de Compute Engine.

Sigue las instrucciones correspondientes según el sistema operativo de la instancia:

Si tu instancia de Compute Engine ejecuta una imagen pública CentOS o RHEL, es posible que SELinux bloquee la conexión del proxy. Si esto sucede, debes configurar la función SELinux para permitir la conexión.

Si deseas obtener más información sobre SELinux para RHEL, consulta la documentación de RHEL. Si deseas obtener más información sobre SELinux para CentOS, consulta la documentación de CentOS.

4. Instala el cliente MySQL en la instancia de Compute Engine, si todavía no está instalado.

Debian/Ubuntu

Instala el cliente MySQL desde el administrador de paquetes:

sudo apt-get update
sudo apt-get install mariadb-server-10.3

CentOS/RHEL

Instala el cliente MySQL desde el administrador de paquetes:

sudo yum install mysql

openSUSE

Instala el cliente MySQL desde el administrador de paquetes:

sudo zypper install mysql-server

Otras plataformas

  1. Descarga el servidor de la comunidad de MySQL para tu plataforma desde la página de descarga del servidor de la comunidad de MySQL.
    El servidor de la comunidad incluye el cliente MySQL.
  2. Instala el servidor de la comunidad con las instrucciones que se muestran en la página de descargas.

Para obtener más información sobre cómo instalar MySQL, consulta el manual de referencia de MySQL: Instala y actualiza MySQL.

5. Conéctate con el cliente MySQL.

mysql --host=[CLOUD_SQL_PUBLIC_IP_ADDR] --user=root --password
Run the following gcloud command to find the CLOUD_SQL_PUBLIC_IP_ADDR:

gcloud sql instances list

Para ver un ejemplo sobre cómo conectarte con SSL, consulta Conéctate con SSL.

6. Aparecerá el cuadro de MySQL.

7. Si necesitas mantener activas las conexiones que no se usan, sigue estos pasos:

Configura el keepalive de TCP.

Para obtener más información, consulta la página sobre cómo comunicar tus instancias a Internet en la documentación de Compute Engine.

Las conexiones se mantienen activas automáticamente para las instancias.

Proxy de Cloud SQL

Para conectarse con el proxy desde Compute Engine, sigue estos pasos:

1. Habilita la API de Administrador de Cloud SQL

Habilita la API

2. Crea una cuenta de servicio.

  1. Ve a la página Cuentas de servicio de Google Cloud Console.

    Ve a la página Cuentas de servicio

  2. Selecciona el proyecto que contiene la instancia de Cloud SQL.
  3. Haz clic en Crear cuenta de servicio.
  4. En el cuadro de diálogo Crear cuenta de servicio, ingresa un nombre descriptivo para la cuenta de servicio.
  5. En Función, selecciona una de las siguientes funciones:
    • Cloud SQL > Cliente de Cloud SQL
    • Cloud SQL > Editor de Cloud SQL
    • Cloud SQL > Administrador de Cloud SQL
  6. Cambia el ID de la cuenta de servicio por un valor único y reconocible.
  7. Haz clic en Proporcionar una nueva clave privada y confirma que el tipo de clave sea JSON.
  8. Haz clic en Crear.

    El archivo de clave privada se descargará en tu equipo. Puedes moverlo a otra ubicación. Protege el archivo de claves.

Si la instancia de Compute Engine se encuentra en un proyecto diferente que la instancia de Cloud SQL, asegúrate de que la cuenta de servicio tenga los permisos correspondientes en el proyecto que contiene la instancia de Cloud SQL:

  1. Ve a la lista de instancias de Compute Engine en Google Cloud Console.

    Ir a la lista de instancias de Compute Engine

  2. Si es necesario, selecciona el proyecto asociado con la instancia de Compute Engine.
  3. Selecciona la instancia de Compute Engine para ver las propiedades.
  4. En las propiedades de la instancia de Compute Engine, copia el nombre de la cuenta de servicio.
  5. Ve a la página Proyectos de IAM y de administración en Google Cloud Console.

    Ir a la página Proyectos de IAM y de administración

  6. Selecciona el proyecto que contiene la instancia de Cloud SQL.
  7. Busca el nombre de la cuenta de servicio.
  8. Si la cuenta de servicio ya existe y tiene una función que incluye el permiso cloudsql.instances.connect, puedes continuar con el paso 4.

    Las funciones de Cloud SQL Client, Cloud SQL Editor y Cloud SQL Admin brindan los permisos necesarios, al igual que las funciones de proyecto heredadas Editor y Owner.

  9. De lo contrario, haz clic en Agregar para incluir la cuenta de servicio.
  10. En el diálogo Agregar miembros, ingresa el nombre de la cuenta de servicio y selecciona una función que incluya el permiso cloudsql.instances.connect (cualquier función predefinida de Cloud SQL funcionará, excepto la función de visualizador).

    O bien, puedes seleccionar Proyecto > Editor a fin de usar la función básica de editor, pero esta incluye permisos para todo Google Cloud.

    Si no ves estas funciones, es posible que tu usuario de Google Cloud no tenga el permiso resourcemanager.projects.setIamPolicy. Para comprobar tus permisos, accede a la página de IAM en Google Cloud Console y busca tu ID de usuario.

  11. Haz clic en Agregar.

    Ahora verás que la cuenta de servicio aparece con la función especificada.

3. Abre una conexión terminal en tu instancia de Compute Engine.

Sigue las instrucciones correspondientes según el sistema operativo de la instancia:

Si tu instancia de Compute Engine ejecuta una imagen pública CentOS o RHEL, es posible que SELinux bloquee la conexión del proxy. Si esto sucede, debes configurar la función SELinux para permitir la conexión.

Si deseas obtener más información sobre SELinux para RHEL, consulta la documentación de RHEL. Si deseas obtener más información sobre SELinux para CentOS, consulta la documentación de CentOS.

4. Instala el cliente MySQL en la instancia de Compute Engine, si todavía no está instalado.

Debian/Ubuntu

Instala el cliente MySQL desde el administrador de paquetes:

sudo apt-get update
sudo apt-get install mariadb-server-10.3

CentOS/RHEL

Instala el cliente MySQL desde el administrador de paquetes:

sudo yum install mysql

openSUSE

Instala el cliente MySQL desde el administrador de paquetes:

sudo zypper install mysql-server

Otras plataformas

  1. Descarga el servidor de la comunidad de MySQL para tu plataforma desde la página de descarga del servidor de la comunidad de MySQL.
    El servidor de la comunidad incluye el cliente MySQL.
  2. Instala el servidor de la comunidad con las instrucciones que se muestran en la página de descargas.

Para obtener más información sobre cómo instalar MySQL, consulta el manual de referencia de MySQL: Instala y actualiza MySQL.

5. Instala el proxy de Cloud SQL en la instancia de Compute Engine.

Linux de 64 bits

  1. Descarga el proxy con el siguiente comando:
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
    
  2. Haz que el proxy sea ejecutable con el siguiente comando:
    chmod +x cloud_sql_proxy
    

Linux de 32 bits

  1. Descarga el proxy con el siguiente comando:
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.386 -O cloud_sql_proxy
    
  2. Haz que el proxy sea ejecutable con el siguiente comando:
    chmod +x cloud_sql_proxy
    

Windows de 64 bits

Para descargar el proxy, haz clic con el botón derecho en https://dl.google.com/cloudsql/cloud_sql_proxy_x64.exe y selecciona Guardar vínculo como. Cambia el nombre del archivo por cloud_sql_proxy.exe.

Windows de 32 bits

Para descargar el proxy, haz clic derecho en https://dl.google.com/cloudsql/cloud_sql_proxy_x86.exe y selecciona Guardar vínculo como. Cambia el nombre del archivo por cloud_sql_proxy.exe.

Imagen del proxy de Docker

Para mayor comodidad, el equipo de Cloud SQL mantiene varias imágenes de contenedor que incluyen el proxy de Cloud SQL para que las usen nuestros clientes. Para obtener más información sobre estas imágenes, consulta el repositorio del proxy de Cloud SQL en GitHub. Puedes extraer la imagen más reciente a tu máquina local usando Docker mediante el siguiente comando:
docker pull gcr.io/cloudsql-docker/gce-proxy:1.19.1

Otro SO

En el caso de otros sistemas operativos que no se incluyen aquí, puedes compilar el proxy a partir del código fuente.

6. Inicia el proxy.

Según tu lenguaje y entorno, puedes iniciar el proxy con sockets TCP, sockets de Unix o la imagen del proxy de Docker.

Sockets TCP

  1. Copia el nombre de la conexión de la instancia desde la página Detalles de la instancia.

    Por ejemplo: myproject:myregion:myinstance.

  2. Si la instancia tiene configuradas IP públicas y privadas, y quieres que el proxy use la dirección IP privada, deberás proporcionar la siguiente opción cuando inicies el proxy:
    -ip_address_types=PRIVATE
  3. Si usas una cuenta de servicio para autenticar el proxy, toma nota de la ubicación del archivo de claves privadas que se generó en la máquina cliente cuando creaste la cuenta de servicio.
  4. Inicia el proxy.

    Estas son algunas strings posibles para invocar al proxy:

    • Si usas la autenticación del SDK de Cloud:
      ./cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:3306
      
      El puerto especificado no debe estar en uso, por ejemplo, por un servidor de base de datos local.
    • Si usas una cuenta de servicio y también incluyes de forma explícita el nombre de la conexión de la instancia (recomendado para entornos de producción):
      ./cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:3306 \
                        -credential_file=<PATH_TO_KEY_FILE> &
      

    Si deseas obtener más información sobre las opciones del proxy, consulta Opciones para autenticar el proxy y Opciones de especificación de instancias.

Sockets Unix

  1. Si usas una especificación de instancia explícita, copia el nombre de la conexión de tu instancia que aparece en la página Detalles de la instancia.
  2. Crea el directorio donde se alojarán los sockets del proxy:
    sudo mkdir /cloudsql; sudo chmod 777 /cloudsql
  3. Si usas una cuenta de servicio para autenticar el proxy, toma nota de la ubicación del archivo de claves privadas que se generó en la máquina cliente cuando creaste la cuenta de servicio.
  4. Abre una ventana de terminal nueva y, luego, inicia el proxy.

    Estas son algunas strings posibles para invocar al proxy:

    • Si usas una cuenta de servicio y también incluyes de forma explícita el nombre de la conexión de la instancia (recomendado para entornos de producción):
      ./cloud_sql_proxy -dir=/cloudsql -instances=<INSTANCE_CONNECTION_NAME> \
                        -credential_file=<PATH_TO_KEY_FILE> &
    • Si usas la autenticación del SDK de Cloud y la detección automática de instancias:
      ./cloud_sql_proxy -dir=/cloudsql &

    Se recomienda iniciar el proxy en su propia terminal para que puedas supervisar los resultados sin que se mezclen con los de otros programas.

    Si deseas obtener más información sobre las opciones del proxy, consulta Opciones para autenticar el proxy y Opciones de especificación de instancias.

  5. Cuando uses un socket Unix para conectarte a Cloud SQL con el proxy de Cloud SQL, asegúrate de que la longitud del nombre del socket no supere el límite del sistema. Esto depende del sistema, pero suele tener entre 91 y 108 caracteres. En Linux, la longitud se suele definir como 108, y puedes usar el siguiente comando para verificar:
    cat /usr/include/linux/un.h | grep "define UNIX_PATH_MAX"

Imagen del proxy de Docker

Para ejecutar el proxy de Cloud SQL en un contenedor de Docker, usa la imagen de Docker del proxy disponible en Google Container Registry.

Puedes iniciar el proxy con sockets TCP o Unix, con los comandos que se muestran a continuación.

Según tu lenguaje y entorno, puedes iniciar el proxy con sockets TCP o Unix. Los sockets Unix no son compatibles con aplicaciones escritas en el lenguaje de programación Java o con el entorno de Windows.

Usa sockets TCP

docker run -d \\
  -v PATH_TO_KEY_FILE:/config \\
  -p 127.0.0.1:3306:3306 \\
  gcr.io/cloudsql-docker/gce-proxy:1.19.1 /cloud_sql_proxy \\
  -instances=INSTANCE_CONNECTION_NAME=tcp:0.0.0.0:3306 -credential_file=/config

Si usas las credenciales proporcionadas por tu instancia de Compute Engine, no incluyas el parámetro credential_file y la línea -v PATH_TO_KEY_FILE:/config.

Especifica siempre el prefijo 127.0.0.1 en -p para que el proxy no se exponga fuera del host local. El “0.0.0.0” en el parámetro de las instancias es necesario para que se pueda acceder al puerto desde afuera del contenedor de Docker.

Usa sockets Unix

docker run -d -v /cloudsql:/cloudsql \\
  -v PATH_TO_KEY_FILE:/config \\
  gcr.io/cloudsql-docker/gce-proxy:1.19.1 /cloud_sql_proxy -dir=/cloudsql \\
  -instances=INSTANCE_CONNECTION_NAME -credential_file=/config

Si usas las credenciales proporcionadas por tu instancia de Compute Engine, no incluyas el parámetro credential_file y la línea -v PATH_TO_KEY_FILE:/config.

Si usas una imagen optimizada para contenedores, usa un directorio que admita operaciones de escritura en lugar de /cloudsql, por ejemplo:

-v /mnt/stateful_partition/cloudsql:/cloudsql

Puedes especificar más de una instancia, separadas por comas. También puedes usar los metadatos de Compute Engine a fin de determinar de forma dinámica las instancias que se conectarán. Obtén más información sobre los parámetros del proxy.

7. Inicia la sesión de MySQL.

La string de conexión que uses dependerá de si iniciaste el proxy con un socket TCP, un socket UNIX o Docker.

Sockets TCP

  1. Inicia el cliente MySQL:
    mysql -u <USERNAME> -p --host 127.0.0.1
    

    Cuando te conectas mediante los sockets TCP, se accede al proxy a través de 127.0.0.1.

  2. Si se te solicita, ingresa la contraseña.
  3. Aparecerá el cuadro de MySQL.

Usa sockets Unix

  1. Inicia el cliente MySQL:
    mysql -u <USERNAME> -p -S /cloudsql/<INSTANCE_CONNECTION_NAME>
    
  2. Ingresa la contraseña.
  3. Aparecerá el cuadro de MySQL.

¿Necesitas ayuda? Para solucionar problemas del proxy, consulta Cómo solucionar problemas de conexión del proxy de Cloud SQL. También puedes consultar nuestra página de asistencia de Cloud SQL.

Pasos siguientes