Hasta iniciar sesión en la base de datos usando cloud-sql-proxy de Google (Cloud SQL Auth Proxy)

5 min

language: ja bn en es hi pt ru zh-cn zh-tw

Hola, soy un inútil.
Por un momento, me tropecé al intentar conectar a la DB a través de cloud-sql-proxy, así que lo anoto.

Instalación de binarios necesarios

Guardar el binario ejecutable de cloud-sql-proxy y configurar la ruta

Primero, se necesita el binario ejecutable de cloud-sql-proxy.
Como no existe en paquetes como brew, es necesario obtener el binario ejecutable, compilado para cada conjunto de instrucciones, del sitio de Google.

curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.2/cloud-sql-proxy.darwin.arm64
chmod +x cloud-sql-proxy
sudo mv cloud-sql-proxy /usr/local/bin
which cloud-sql-proxy

Aunque no mucha gente lo hace, los binarios ejecutables instalados con homebrew se colocan bajo /opt/homebrew/bin/, pero como esta vez es un binario único instalado por el usuario, en el caso de MacOS, que es un fork de FreeBSD, parece mejor /usr/local/bin, así que lo puse allí.

Instalar el binario de MySQL

Al parecer, si se ejecuta brew install mysql sin especificar ninguna versión, faltan binarios o la versión es demasiado baja, lo que causa un error al conectar, así que se instala de la siguiente manera.
Esto se resolvió en segundos gracias a un compañero.

brew install mysql-client@8.4

Y, entonces,
si la ruta no está configurada, buscarla de la siguiente manera y crear un enlace simbólico.

find /opt/homebrew -name "mysql*"
ln -s /ruta/del/binario/mysql/encontrado /opt/homebrew/bin/mysql

Obtener información de la DB a conectar

Verificación del entorno y autenticación

Se asume que ya se ha realizado el proceso de inicio de sesión.

gcloud auth login
gcloud auth application-default login

Especificar el proyecto de la siguiente manera

gcloud config set project ID_del_proyecto

La verificación del proyecto se realiza de la siguiente manera

gcloud config get-value project

Y luego, verificar el nombre de conexión a la DB de la siguiente manera

gcloud sql instances describe nombre_de_instancia_DB | grep "^connectionName:" | awk '{print $2}'

Conectar a través de cloud-sql-proxy

Esto es una cuestión de mecanismo, este cloud-sql-proxy actúa como proxy para la DB.
En términos de imagen, si se intenta acceder a la DB misma que reside dentro de una VM, sería necesario hacer SSH a ese SO y realizar un proceso de inicio de sesión en el propio servidor de la DB, pero al usar este proxy, el servidor de DB que reside en Cloud SQL se configura para Listen en el localhost.
Si el puerto de la DB estuviera abierto, creo que se podría conectar directamente a ese servidor de DB, pero no creo que haya ningún lugar donde se configure un servidor de DB en un estado tan inseguro.
Por lo tanto, si se desea conectar de la manera más segura y sencilla posible, supongo que la solución fue usar un proxy para la DB.

Entonces, especifiquemos el nombre de conexión de la DB que verificamos anteriormente.

cloud-sql-proxy --port 3306 nombre_de_conexion_DB

Lo anterior es para MySQL, por lo que para PostgreSQL u otros, sería necesario especificar un puerto diferente, y los binarios necesarios también cambiarían, así que ¿sería necesario modificar esto según corresponda?

Una vez establecida la conexión, como está en un estado de proxy exitoso, déjelo así y conéctese a MySQL desde otra terminal, y estará bien.

mysql --user="usuario_DB" --password="contraseña_del_usuario_DB" -h 127.0.0.1

Hasta la próxima.
Saludos.

Related Posts