Julio César

Desarrollador de software, con experiencia en desarrollo web y móvil. Apasionado por la tecnología y la innovación.

Instalación, Configuración y Uso de PostgreSQL en Ubuntu

Uno de los aspectos esenciales en la gestión de aplicaciones es la capa de persistencia de datos, es decir, el mecanismo de almacenamiento y control de la información. Entre algunos mecanismos, el más destacado por escalabilidad, eficiencia y confiabilidad son los motores bases de datos.

En esta oportunidad veremos como instalar, configurar y poner a punto de operación el motor de base de datos PostgreSQL.

Contenido


Instalación de PostgreSQL

En primer lugar debemos actualizar el índice de paquetes del sistema operativo.

sudo apt update

Posteriormente instalamos el paquete postgresql.

sudo apt install postgresql

Para confirmar que la instalación fue exitosa, vamos a movernos temporalmente a una sesión con el usuario postgres creado en el sistema operativo durante la instalación:

sudo -u postgres psql

Ahora ejecutamos la siguiente consulta para obtener la versión de PostgreSQL instalada.

SELECT version();

Configuración de PostgreSQL

Por defecto, el motor de PostgreSQL atiende las conexiones a través del puerto 5432. Sin embargo, puedes obtener información sobre el motor de base de datos con el siguiente comando:

pg_lsclusters

Como resultado de este comando, podrás ver el número de puerto de cada instancia en tu cluster, además de las rutas de datos y de logs.

Otra forma de encontrar el puerto utilizado por la base de datos es a través del clásico comando ss:

sudo ss -tlnp | grep postgres

Finalmente para modificar parámetros de funcionamiento de la base de datos (incluyendo el puerto de escucha), podrás acceder a toda la configuración en la ruta que se muestra a continuación, donde debes cambiar <version> por la versión que corresponda a tu instalación (16, 17, 18, etc):

/etc/postgresql/<version>/main/postgresql.conf

Gestión del servicio de base de datos

La base de datos funciona como cualquier otro servicio de Linux, puedes iniciarla, detenerla y verificar su estado actual.

Para gestionar los servicios usamos el comando systemctl que tiene la siguiente sintaxis:

sudo systemctl <action> <service>

Donde service corresponde al nombre del servicio con el que estamos trabajando (en este caso PostgreSQL) y action corresponde a la acción que queremos ejecutar sobre el servicio, esto es, iniciarlo, detenerlo, monitorearlo.

Para conocer el estado actual del servicio ejecutamos la línea:

sudo systemctl status postgresql

Para iniciar el servicio de la base de datos ejecutamos la línea:

sudo systemctl start postgresql

Para detener el servicio de la base de datos ejecutamos la línea:

sudo systemctl stop postgresql

Instalación de pgAdmin 4

Un cliente de escritorio o web es de vital importancia para gestionar una base de datos. En este caso nuestra recomendación en pgAdmin ya que es una herramienta de los mismos desarrolladores de PostgreSQL, aunque existen alternativas.

En primer lugar vamos a configurar la llave pública del repositorio de pgAdmin.

curl -fsS https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo gpg --dearmor -o /etc/apt/keyrings/packages-pgadmin-org.gpg

Con la llave agregada vamos ahora a crear el archivo de configuración del repositorio:

sudo sh -c 'echo "deb [signed-by=/etc/apt/keyrings/packages-pgadmin-org.gpg] https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'

Ahora vamos a actualizar el índice de repositorios e instalamos nuestro cliente.

sudo apt update

sudo apt install pgadmin4

El comando anterior instala el cliente web y el cliente de escritorio, puedes instalarlos de forma independiente con los comandos:

# Install for desktop mode only:
sudo apt install pgadmin4-desktop

# Install for web mode only: 
sudo apt install pgadmin4-web 

Si instalas la versión web y deseas usarla debes configurar el servidor web con el siguiente comando:

# Configure the webserver, if you installed pgadmin4-web:
sudo /usr/pgadmin4/bin/setup-web.sh

Gestión de base de datos desde la terminal

Para realizar la gestión más básica de usuarios podemos valernos de la terminal de comandos, esto requiere iniciar la sesión del usuario postgres creado automáticamente tras la instalación y ejecutar la herramienta psql.

sudo -u postgres psql

Por otra parte, un comando más avanzado puede ser el siguiente:

psql -U appuser -h localhost -W -d mydatabase

La descripción de cada parámetro es la siguiente:

Creación de nuevos usuarios

Una de las mayores recomendaciones es mantener el mínimo nivel de privilegios posible, esto es muy importante en cualquier escenario y con postgreSQL podemos lograrlo creando usuarios y gestionando permisos/roles.

Creamos un nuevo usuario y asignamos una contraseña con la siguiente instrucción en psql.

CREATE USER appuser WITH PASSWORD 'my_secure_password';

Asignar o actualizar contraseñas

Una vez nos encontramos en la shell de Postgres vamos ejecutar el comando \password seguido del nombre del usuario al que queremos actualizar o agregar una nueva contraseña, este caso el usuario administrador postgres.

\password postgres

Allí asignaremos la nueva contraseña. Este es el método recomendado. Anteriormente utilizabamos una instrucción de SQL para alterar la contraseña del usuario pero esto nos expone al riesgo de filtrar contraseñas en el historial de la terminal o en archivos de logs.

El método antiguo consistía en ejecutar la siguiente instrucción en la shell psql:

ALTER ROLE postgres WITH PASSWORD 'your_new_password';

Para salir de la shell psql y regresar a nuestro usuario normal del sistema operativo usamos el comando \q.

Esto ha sido todo por ahora, en próximos artículos veremos configuraciones relacionadas con la seguridad de nuestras bases de datos.


Autor: Julio César Echeverri M.