Conecta con una instancia de Cloud SQL en Manjaro#

Aprovechando que estoy en reinstalación por la transición de (X/K)ubuntu a Manjaro, les contaré sobre como conectar a una instancia de Cloud SQL en Manjaro.

Google Cloud SDK#

Instalación de Google Cloud SDK#

Para la gestión de elementos de infraestructura, lo cual incluye la conexión a la base de datos, se requiere disponer de Google Cloud SDK. El proceso de instalación depende del sistema operativo, y ante inquietudes, siempre puedes remitirte a la documentación oficial.

Este paquete está disponible en el AUR, por lo cual se puede usar en Arch.

pamac build google-cloud-cli --no-confirm

Consejo

Si no detecta el binario, puedes reiniciar cerrar y abrir la terminal. En mi caso solo me funcionó de esta forma, ni con source de ~/.zshrc ni ~/.bashrc funcionó. A pesar de esto, era detectado por whereis y which.

echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
sudo apt-get install apt-transport-https ca-certificates gnupg
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
sudo apt update -q
sudo apt install -y google-cloud-sdk

Autenticación Google Cloud SDK#

Una vez se ha instalado, debemos autenticarnos para la gestión de proyectos y para el manejo de credenciales de aplicaciones. Si usas más de un navegador y separas tu perfil personal y laboral según el navegador, o usas múltiple perfil en el navegador, o incluso si es un escritorio remoto o un contenedor usado desde Windows y no puedes usar el navegador, recomiendo que la autenticación la gestiones copiando y pegando manualmente el enlace de autenticación (--no-launch-browser). Ambas autenticaciones requieren validar en navegador.

gcloud init --no-launch-browser
gcloud auth application-default login --no-launch-browser

Cloud SQL Proxy#

Instalación de Cloud SQL Proxy#

Con el fin de crear el proxy de la conexión a la base de datos, en caso de requerir funciones de consulta y no de administración general, debemos tener Cloud SQL Proxy. Para mayor detalle puedes remitirte a la documentación oficial.

pamac build cloud-sql-proxy
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.1/cloud-sql-proxy.linux.amd64
chmod +x cloud-sql-proxy

Este método válido para cualquier distribución Linux, dejará fijada la versión.

Iniciar Cloud SQL Proxy#

Con el fin de crear la conexión a la instancia de base de datos, debemos iniciar el proxy de la siguiente forma:

cloud-sql-proxy <NOMBRE DE INSTANCIA> -p <PUERTO>

Esto nos habilitará el acceso por 127.0.0.1:<PUERTO>.

Error

2024/12/10 16:36:44 Authorizing with Application Default Credentials
2024/12/10 16:36:44 Error starting proxy: error initializing dialer: failed to create default credentials: google: could not find default credentials. See https://cloud.google.com/docs/authentication/external/set-up-adc for more information
2024/12/10 16:36:44 The proxy has encountered a terminal error: unable to start: error initializing dialer: failed to create default credentials: google: could not find default credentials. See https://cloud.google.com/docs/authentication/external/set-up-adc for more information

Este error corresponde a la necesidad de aplicar la autenticación de credenciales por defecto de aplicación que se describe previamente.

Conectar a la base de datos#

En mi trabajo usamos MySQL, y aunque comencé usando MySQL Workbench, este no era muy cómodo y mis compañeros usaban dbeaver. Este me pareció interesante y fue el que estuve usando hasta que conocí dbgate. Estos dos se encuentran disponibles como flatpak para que los instales cómodamente en cualquier distro Linux, pero el caso particular de dbeaver no se visualiza bien en Wayland cuando se instala de esta forma, por lo que es preferible la instalación del repo oficial.

sudo pamac install dbeaver --no-confirm
sudo pamac install dbeaver-plugin-office dbeaver-plugin-svg-format --as-deps --no-confirm
pamac build dbgate-bin
flatpak install -y flathub org.dbgate.DbGate  # Verificado
flatpak install -y flathub io.dbeaver.DBeaverCommunity  # No verificado

Un punto extra para no usar MySQL Workbench es usar no solo un cliente moderno, sino también con soporte para múltiples bases de datos (no solo MySQL).

Consejo

En el pasado, he tenido conflictos con el uso de localhost como asignación del host en los clientes, y esto es que no siempre debe resolverse como 127.0.0.1, por lo cual es mejor usar siempre en la configuración la IP.