ceu-notes/2/ASGBD/assignments/manual-postgresql/manual-postgresql.md

89 lines
2.7 KiB
Markdown
Raw Permalink Normal View History

2022-10-18 18:58:44 +00:00
# Manual de Instalación y Configuración PostgreSQL
_Nicolás A. Ortega Froysa_
## Instalación de PostgreSQL
Desde una máquina de GNU & Linux basada en Debian, podemos instalar el
PostgreSQL desde la línea de comando con el siguiente comando como `root`:
```bash
apt install postgresql
```
Generalmente en los sistemas basados en Debian los servicios se inicializan al
instalarse, pero siempre conviene asegurarnos. Para esto veremos la salida del
estado actual de este servicio:
![PostgresSQL status](imgs/00-postgresql-status.png)
## Configuración de PostgreSQL
Una vez instalado el PostgreSQL, hay que configurarlo para poder accederlo
remotamente. Primero hemos de configurar la contraseña del usuario `postgres`.
Esto se hace entrando en el usuario de sistema `postgres`, y entrando en la base
de datos usando el comando `psql`. Una vez conectado a la base de datos
configuramos la contraseña usando el comando siguiente:
```
alter user postgres with password 'postgres';
```
![Change postgres password](imgs/01-change-postgres-passwd.png)
Con esto aún es necesario cambiar la configuración de PostgreSQL como tal para
permitir acceso remoto (desde fuera de la misma máquina). Para esto, primero
editamos el archivo de configuración `/etc/postgresql/13/main/postgresql.conf`
para cambiar la directiva de `listen_addresses` a lo siguiente:
```
listen_addresses = '*'
```
Luego editamos el archivo de `/etc/postgresql/13/main/pg_hba.conf` y lo
cambiamos de la forma siguiente:
```
#host all all 127.0.0.1/32 md5
host all all 0.0.0.0/0 md5
```
Al hacer estos cambios podemos reiniciar el servicio para efectuarlos:
```
systemctl restart postgresql.service
```
## Firewalld
Para tener un sistema seguro será necesario tener un _firewall_ instalado. Para
esto vamos a instalar a `firewalld`, una herramienta de RedHat. Esto se hace con
el comando `apt install firewalld`. Al instalarlo, para configurar que deje
abierto el puerto de PostgreSQL corremos los siguientes comandos como root:
```
$ firewall-cmd --permanent --zone=public --add-port=5432/tcp
$ firewall-cmd --reload
```
Esto abrirá el puerto 5432 al público.
## Prueba
Finalmente, para hacer una prueba, podemos conectarnos desde otra máquina a
nuestro servidor corriendo el comando siguiente e introduciendo la contraseña
que hemos configurado antes:
```
psql -h <address> -p <port> -U postgres postgres
```
![PostgreSQL connect](imgs/02-postgresql-connect.png)
## Derechos de Autor
Copyright © 2022 Nicolás A. Ortega Froysa <nicolas@ortegas.org>
Este documento se distribuye bajo los términos y condiciones de la licencia
Creative Commons Attribution No Derivatives 4.0 International.