Hasta iniciar sesión en la base de datos usando cloud-sql-proxy de Google (Cloud SQL Auth Proxy)
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.