En esta página se describe cómo conectar un cliente sqlcmd a tu instancia de Cloud SQL desde una máquina cliente que ejecute Linux o una instancia de Linux de Compute Engine mediante la imagen Docker del proxy de autenticación de Cloud SQL.
Antes de empezar
Debes contar con estos elementos:
- Haber instalado gcloud CLI. Más información
- Ha autorizado la CLI de gcloud. Más información
- Define el proyecto predeterminado de gcloud CLI. Más información
- Debe configurarse un usuario de base de datos en la instancia de Cloud SQL. Más información
Conectar un cliente sqlcmd mediante la imagen Docker del proxy de autenticación de Cloud SQL
Para conectarte mediante la imagen Docker del proxy de autenticación de Cloud SQL, haz lo siguiente:
-
Enable the Cloud SQL Admin API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. - Si usas una instancia de Compute Engine, prepárala:
-
Muestra las propiedades de la instancia de Compute Engine:
gcloud compute instances describe [GCE_INSTANCE_NAME]
- Verifica los permisos habilitados en la instancia.
La autenticación mediante permisos requiere los dos siguientes:
https://www.googleapis.com/auth/sqlservice.admin
https://www.googleapis.com/auth/devstorage.read_write
También puedes usar el permiso
https://www.googleapis.com/auth/cloud-platform
para habilitar todas las APIs de Google Cloud Platform.Si tu instancia de Compute Engine no dispone de los permisos adecuados, puedes actualizarla para incluirlos. Si quieres obtener más información, consulta la documentación de Compute Engine.
- Abre una conexión de terminal a la instancia como se establece en las instrucciones sobre cómo conectarse a instancias de Linux.
-
Muestra las propiedades de la instancia de Compute Engine:
-
Instala el cliente sqlcmd en la instancia de Compute Engine o en la máquina cliente si aún no lo has hecho.
Debian o Ubuntu
En Debian o Ubuntu, instala las herramientas de línea de comandos de SQL Server correspondientes.
CentOS o RHEL
En CentOS o RHEL, instala las herramientas de línea de comandos de SQL Server correspondientes.
openSUSE
En openSUSE, instala las herramientas de línea de comandos de SQL Server correspondientes.
Otras plataformas
Consulta la página de destino para instalar SQL Server, así como la página de descargas de SQL Server.
-
Si resulta necesario, instala el cliente Docker:
curl https://get.docker.com | sh sudo usermod -aG docker $USER
Si estás usando una instancia de Compute Engine optimizada para contenedores, ya tendrás instalado el cliente Docker.
-
Instala la imagen Docker del proxy de autenticación de Cloud SQL desde Google Container Registry.
docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.18.2
- Si ejecutas la imagen de Docker del proxy de autenticación de Cloud SQL en una máquina local (no en una instancia de Compute Engine) o tu instancia de Compute Engine no tiene los ámbitos adecuados, crea una cuenta de servicio de Google Cloud Platform.
- En la Google Cloud consola, ve a la página Cuentas de servicio.
- Selecciona el proyecto que contiene tu instancia de Cloud SQL.
- Haz clic en Crear cuenta de servicio.
- En el campo Nombre de cuenta de servicio, escribe un nombre descriptivo para la cuenta de servicio.
- Cambia el ID de cuenta de servicio por un valor único y reconocible y, a continuación, haz clic en Crear y continuar.
-
Haz clic en el campo Selecciona un rol y elige uno de los siguientes:
- Cloud SQL > Cliente de Cloud SQL
- Cloud SQL > Editor de Cloud SQL
- Cloud SQL > Administrador de Cloud SQL
- Haz clic en Hecho para terminar de crear la cuenta de servicio.
- Haz clic en el menú de acciones de tu nueva cuenta de servicio y, a continuación, selecciona Gestionar claves.
- Haz clic en el menú desplegable Añadir clave y, a continuación, en Crear clave.
-
Confirma que el tipo de clave es JSON y, a continuación, haz clic en Crear.
El archivo de clave privada se descarga en tu máquina. Puedes moverlo a otra ubicación. Debes proteger el archivo de clave.
Cuando inicias el proxy de autenticación de Cloud SQL, proporcionas la ruta al archivo de claves como "PATH_TO_KEY_FILE".
- Ve a la página Instancias de Cloud SQL de la Google Cloud consola.
-
Selecciona la instancia para abrir su página Detalles de la instancia y copia el Nombre de conexión de la instancia.
Por ejemplo:
myproject:us-central1:myinstance
. -
Inicia el proxy de autenticación de Cloud SQL.
En función del lenguaje y del entorno, puedes iniciar el proxy de autenticación de Cloud SQL mediante sockets TCP o sockets Unix. Los sockets Unix no son compatibles con las aplicaciones escritas en lenguaje de programación Java o pensadas para el entorno Windows.
Sockets TCP
docker run -d \ -v <PATH_TO_KEY_FILE>:/path/to/service-account-key.json \ -p 127.0.0.1:1433:1433 \ gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.18.2 \ --credentials-file /path/to/service-account-key.json <INSTANCE_CONNECTION_NAME>
Si utiliza las credenciales proporcionadas por su instancia de Compute Engine, no incluya el parámetro
--credentials-file
ni la línea-v <PATH_TO_KEY_FILE>:/path/to/service-account-key.json
.Especifica siempre el prefijo
127.0.0.1
en -p para que el proxy de autenticación de Cloud SQL no se exponga fuera del host local. En el parámetro de instancias se requiere el valor "0.0.0.0" para que sea posible acceder al puerto desde fuera del contenedor Docker.Sockets Unix
docker run -d -v /cloudsql:/cloudsql \ -v <PATH_TO_KEY_FILE>:/path/to/service-account-key.json \ gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.18.2 // --unix-socket=/cloudsql \ --credentials-file /path/to/service-account-key.json <INSTANCE_CONNECTION_NAME>
Si utiliza las credenciales proporcionadas por su instancia de Compute Engine, no incluya el parámetro
--credentials-file
ni la línea-v <PATH_TO_KEY_FILE>:/path/to/service-account-key.json
.Si usas una imagen optimizada para contenedores, utiliza un directorio en el que se pueda escribir en lugar de
/cloudsql
. Por ejemplo:-v /mnt/stateful_partition/cloudsql:/cloudsql
Puedes especificar más de una instancia si las separas por comas. También puedes usar los metadatos de Compute Engine para determinar de forma dinámica las instancias a las que conectarte. Más información sobre los parámetros de proxy
- Inicia el cliente:
La cadena de conexión que uses dependerá de si has iniciado el proxy de autenticación de Cloud SQL mediante un socket TCP o Docker.
Sockets TCP
- Inicia el cliente sqlcmd:
sqlcmd -S tcp:127.0.0.1,1433 -U USERNAME -P PASSWORD
Cuando te conectas mediante sockets TCP, se accede al proxy de autenticación de Cloud SQL a través de
127.0.0.1
. - Si se te solicita, introduce la contraseña.
- Aparecerá el símbolo del sistema sqlcmd.
- Inicia el cliente sqlcmd:
Mantener actualizada la imagen Docker del proxy de autenticación de Cloud SQL
La imagen de Docker del proxy de autenticación de Cloud SQL se basa en una versión específica del proxy de autenticación de Cloud SQL. Cuando haya una nueva versión del proxy de autenticación de Cloud SQL, extrae la nueva versión de la imagen Docker del proxy de autenticación de Cloud SQL para mantener tu entorno actualizado. Puedes consultar la versión actual del proxy de autenticación de Cloud SQL en la página de lanzamientos de GitHub del proxy de autenticación de Cloud SQL. Las futuras versiones del proxy también se indicarán en el foro Anuncios de Cloud SQL de Grupos de Google.
Siguientes pasos
- Consulta más información sobre el proxy de autenticación de Cloud SQL.
- Obtén ayuda para solucionar problemas de conexión del proxy de autenticación de Cloud SQL.
- Crea usuarios y bases de datos.
- Más información sobre las opciones para conectarse a la instancia desde la aplicación
- Más información sobre Docker
- Más información sobre Google Container Registry
- Más información sobre las opciones de asistencia