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.
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.
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.
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.
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.
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.