Este post es parte de una serie de artículos que describen paso a paso mi setup personal, puedes ver la lista completa aquí
Paso 1: Instalación
Primero nos aseguramos de tener todo actualizado en nuestro sistema, para eso ejecutamos los siguientes comandos:
$ sudo apt update
$ sudo apt upgrade
Ahora sí, vamos a instalar PostgreSQL
junto al paquete -contrib
que agrega algunas utilidades y funcionalidades extra:
$ sudo apt install postgresql postgresql-contrib
Después del proceso de instalación, cada vez que quisiéramos interactuar con el servicio de PostgreSQL
se tendrá que levantar el servidor de la base de datos, para hacerlo usaremos el siguiente comando:
$ sudo service postgresql start
* Starting PostgreSQL 12 database server [ OK ]
Recuerda que, siempre que inicie de nuevo su sistema, tiene que levantar el servicio de PostgreSQL
para poder interactuar con él.
Paso 2: Usando Roles PostgreSQL y Bases de datos
Por defecto PostgreSQL
usa el concepto de roles, similar a como se manejan los roles en Unix/Linux, en el proceso de instalación Postgres
crea una cuenta llamada postgres
que esta asociada al rol predeterminado por PostgreSQL
. Y para poder acceder, tenemos que usar esa cuenta, que se creo por defecto.
Esta instalación trae consigo un alias, psql
, que una vez tenemos levantado el servicio de postgres
nos ayudara a conectarnos a las bases de datos desde nuestra terminal.
Pero este alias, usa los roles del sistema para ejecutarse, por eso, si ejecutamos el comando psql
en nuestra terminal, veremos que nos falta crear nuestro usuario.
$ psql
psql: error: FATAL: role "paulotijero" does not exist
Para solucionar este error, será prudente que configuremos una cuenta personal en el servicio de PostgreSQL
, para poder crear un usuario con nuestra cuenta de administrador de Unix/Linux
usaremos un comando con un flag (--iterative
), esto nos ayudara a crear nuestro usuario y rol de forma interactiva:
$ sudo -u postgres createuser --interactive
Nosotros pondremos el mismo nombre de la cuenta que usamos cuando iniciamos ubuntu
en nuestro wsl
.
Seguidamente preguntará si queremos darle permisos de superusuario
, al que responderemos con un y
, veamos un ejemplo:
$ sudo -u postgres createuser --interactive
Enter name of role to add: paulotijero
Shall the new role be a superuser? (y/n) y
Ahora, cuando intentemos acceder al servicio de postgresql
con el alias psql
nos enviará un mensaje error, parecido al anterior (en estructura), pero diferente (en contenido), diciendo que aún no tenemos creada la base de datos de nuestro usuario, saldrá algo como esto:
$ psql
psql: error: FATAL: database "paulotijero" does not exist
Paso 3: Creando una nueva base de datos
Otra suposición que hace PostgreSQL
, es que cuando intentemos conectarnos al servicio, buscará una base de datos con el mismo nombre de tu usuario para conectarse.
Obviamente hace un momento solo creamos el usuario/rol, y lo asignamos por default, pero aún no creamos su base de datos, así que, usaremos el siguiente comando para crearlo:
$ sudo -u postgres createdb paulotijero
Con esto resuelto, ahora ya podremos conectarnos directamente a nuestro servicio con el alias psql
pero antes de eso, tendríamos que darle los permisos la primera vez que nos conectemos, para poder editar las tablas dentro de nuestra linea de comandos sql
:
$ sudo -i -u paulotijero psql
psql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))
Type "help" for help.
Una vez dentro del terminal de psql
, podremos interactuar con todas nuestras bases de datos, podrás encontrar más comandos aquí.
Para salirnos usamos exit
o q
, ahora que ya lo tenemos completamente configurado para que cada vez que usemos el alias psql
nos conecte a nuestro user, con poderes de super admin.
$ psql
psql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))
Type "help" for help.
paulotijero=#
Y listo, ya tenemos configurado PostgreSQL
como su gestor de base de datos en WSL - Ubuntu
🎉