Skip to content

Instantly share code, notes, and snippets.

@NumberPiOso
Last active December 15, 2020 17:30
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NumberPiOso/85284eeb86444880ef80f2d6bb3dcc7a to your computer and use it in GitHub Desktop.
Save NumberPiOso/85284eeb86444880ef80f2d6bb3dcc7a to your computer and use it in GitHub Desktop.
Corregir doble backslash

Problema en la conexión a servidor postgresql en Windows desde WSL 2

Al cambiarse a WSL 2 desde WSL pueden salir errores de conexión a la base de datos. Esto causado a que como WSL 2 se comporta más como una maquina virtual, tiene su propia IP. Esto puede causar problemas en comandos y aplicaciones que antes corrían en WSL 1 sin ningún problema. Es una carácteristica no deseada que ya está documentada Comparing WSL 1 and WSL 2.

Búsqueda de IP

Este comando debe ser corrido en la terminal del WSL. Por ejemplo, en Ubuntu.

>> grep nameserver /etc/resolv.conf | awk '{print $2}'
172.17.162.32

Entonces está IP sería 172.17.162.32

De ahora en adelante hay que cambiar la configuración de nuestros comandos para que se conecte a esta dirección en remplazo de localhost.

Permitir la IP en el firewall

En mi caso, se maneja el firewall desde McAfee, por lo que debo ingresar a las configuraciones de firewall de McAfee y permitir esta conexión.

Ingresamos al firewall de Mcafee.

Presionamos agregar.

E ingresamos la siguiente configuración

Y presionamos guardar. Esto debería ser suficiente para que se permita la conexión a través del firewall.

Permitir la IP desde Postgresql

Posteriormente hay que permitir el ingreso de la nueva IP desde el Postgresql.

En mi caso, el archivo de configuración de Postgresql estaba en esta ruta

C:\Program Files\PostgreSQL\12\data

y se llamaba pg_hba.conf, por lo que modifiqué este archivo de esto.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

Con la nueva linea que permite la conexión desde todas las rutas 172.16.0.0 – 172.31.255.255 (172.16. 0.0/12) que pueden ser utilizadas por WSL. También en caso de necesidad se puede incluir el espacio 192.168. 0.0 – 192.168. 255.255 (192.168.0.0/16)

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             172.16.0.0/12           trust
host    all             all             192.168.0.0/16          trust

# IPv6 local connections:
host    all             all             ::1/128                 md5

Finalmente, con esto debería ser suficiente para poder realizar la conexión a la base de datos desde el WSL 2.

Prueba

Si tienes psql instalado en tu versión de linux puedes intentar el siguiente comando.

$ psql -h HOST -p 5432 -U postgres

En mi caso

$ psql -h 172.17.162.32  -p 5432 -U postgres
psql (12.3, server 12.4) 
Type "help" for help.

postgres=# 

Ingresando a la ventana de comandos de psql confirmando que realizó la conexión. Finalmente presiona \q para salir.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment