A estas alturas seguro ya has hecho el curso de Prework de Windows para poder establecer tu entorno de desarrollo (Si no lo has hecho o tiene curiosidad de qué se trata, lo puedes revisar aquí), avanzaste por todo el frontend y ahora quieres conocer a detalle el backend por lo que has llegado hasta aquí a conocer POSTGRES y quieres comenzar a trabajar con él, pero tienes problemas con su instalación en Windows o quieres aprovechar las ventajas que hay en usar WSL para el desarrollo por el uso intensivo de la terminal y la gran potencia que hay en el sistema UNIX o simplemente eres un curioso y quieres sentirte un hacker. Pues aquí hay una solución que puede conectar los 2 mundos:
Primero: Instalar PostgreSQL en WSL2
Como indica aquí, puedes instalar Postgres siguiendo los siguientes pasos:
Si la instalación salió bien, en tu terminal verás esto:
NOTA:
Si entras a la página de descarga de postgres verás que la última versión es la 14.1, pero si estás haciendo el Curso de PostgresSQL sabrás que recomiendan instalar la penúltima o antepenúltima versión, ya que es la que suele estar en los sistemas cloud que manejan esta base de datos por lo que esta versión sería la antepenúltima y servirá para hacer el curso sin problemas.
Luego de instalado, éstos 3 comandos serán los que necesitarás para usar POSTGRES:
sudo service postgresql start
para iniciar la base de datos, aquí te va a pedir la clave root de wslsudo service postgresql status
para conocer el estado de la base de datos.sudo service postgresql stop
para detener la base de datosEsto es lo que deberías ver en tu terminal cuando ejecutas estos comandos
Con la instalación de PostgresSQL, se crea por defecto el usuario admin, el cual necesita una clave para poder conectarse a la base de datos, para asignarla tienes que hacer lo siguiente:
sudo passwd postrgress
Luego si todo está correcto, para acceder y usar el shell de psql debes hacer lo siguiente:
Estando todo en orden, deberías ver en el terminal que inicia con la línea de comandos postgress=#
Una vez culminado con la instalación de postgres, descargas e instalas pgAdmin.
Luego, inicias postgres en el terminal:
sudo service postgresql start
En puerto, ponen 5432. Maintenance database y Username lo dejan con postgres como está por defecto.
En Password, ponen la clave que definieron en la parte de instalación de postgres
Para solucionarlo pueden resetear la clave haciendo lo siguiente:
Ingresar sin clave con: sudo -u user_name psql db_name
Resetear la clave con el siguiente comando:
ALTER USER user_name WITH PASSWORD 'clave_nueva';
¿Qué es lo que hacen estos pasos?
El primer paso, te hace ingresar a la base de datos a la que el usuario tiene acceso. Cuando se crea una base de datos de PostgreSQL, ésta crea una serie de bases de datos automáticas por defecto y en el curso se ve más a detalle esa explicación. Como podemos imaginar, user_name y db_name hacen referencia al usuario y la base de datos que está relacionada a ese usuario.
En el segundo paso, lo que se hace es cambiar la clave para ese usuario alterando la tabla.
Ahora, luego de leer esta explicación te preguntarás ¿cómo puedo saber cuál es mi usuario para cambiarle la clave y poder crear mi server como Dios manda?
Como recordarás, gracias a la que lo hemos mencionado varias veces en este artículo el usuario por defecto es postgres y vimos que al momento de instalar para iniciar el psql sheel hacíamos uso de una parte del código del primer paso
sudo -u user_name psql
Ello nos mostraba la terminal con la línea de comandos postgress=#, una vez dentro de ello ponemos el comando
\l
El cual nos mostrará una tabla con los usuarios y bases de datos:
Allí observaremos que si hemos seguido los pasos verás que existen 3 bases de datos por defecto (en mi caso creé la tabla test2 para hacer pruebas y por eso me salen 4 bases de datos). Como se puede observar en la tabla, todas tienen como Owner (Usuario) a postgres que es el nombre por defecto.
Para hacer el cambio de clave veremos que:
user_name = postgres
db_name = postgres
Por lo tanto, los comandos serían de la siguiente forma:
sudo -u postgres psql postgres
Resetear la clave con el siguiente comando:
ALTER USER postgres WITH PASSWORD ‘tu_clave_nueva’;
Ahora tenemos que ver que todo vaya en orden y que nuestra conexión haya funcionado, para ello vamos a crear bases de datos tanto por el terminal de WSL2 como por pgAdmin y nos debe ser posible visualizarla desde cada lado.
Creamos una base de datos con pgAdmin:
Ahora accederemos por el psql shell para visualizar la tabla que hemos creado. Para ello ponemos el código
sudo -u postgres psql
y luego en el psql shell ponemos
\l
para poder visualizar las bases de datos que tenemos. Si todo está correcto la tabla “prueba-db” que creamos con pgAdmin debe estar visible y aparece en la segunda fila de la tabla. (postgres los ordena por orden alfabético.
Ahora vamos a hacer el proceso inverso, vamos a crear una base de datos desde la terminal, la cual llamaremos “terminal_db” y que visualizaremos en pgAdmin. Para ello usaremos el comando:
CREATE DATABASE terminal-db;
Que luego verificaremos con el comando
\l
el cual nos permitirá ver todas las bases de datos que tenemos, donde saldrá la última que hemos creado.
Verificando desde pgAdmin
Le damos clic derecho en database, le damos refrescar y podremos ver la tabla que creamos en pgAdmin, por lo que todo el proceso ha sido correcto.
Y listo, de ésta forma podemos continuar con el Curso de PostgresSQL aprovechando las ventajas que nos ofrece WSL2 y la facilidad que nos brinda el entorno gráfico pgAdmin.
Hola, es cosa mía, a en este paso:
"Usar el comando sudo passwd postrgress"
Le sobra una “s” al final
Buenas, en realidad sobran 2 “s”.
Lo ideal sería asi: sudo passwd postgres
me salvaste amigo
Creo que a mí me sale un error. La terminal con WSL conecta a postgres, pero al usar el comando \l devuelve otras bases de datos. No estoy seguro pero me da la idea de que tengo dos instancias de postgres, una en windows y otra en ubuntu (wsl). Alguien sabe cómo arreglarlo?
Muchas gracias por el tutorial @Oxalc, me ayudó un montón 💚✨
Estoy viendo el curso justo hoy, pero realicé la instalación normal por windows, de igual modo que buen tutorial, debí verlo visto antes de instalar 😦
Falto indicar que se debe inicializar el servicio luego de instalar
sudo service postgresql start
Perfecto el aporte amigo, una pregunta, sabes cual es el comando para abrir pgadmin4 desde WSL Ubuntu. Más que todo por saber cómo hacerlo, gracias.
Gracias por el aporte.
A los que leen despues, fijense muy bien en usar bien los comandos, sin errores de sintaxis.
Vuestro usuario por defecto es postgres
Muchas gracias! Estuve buscando esto 👏