En esta entrada vamos a ver cómo instalar PostgreSQL en Debian 8 Jessie paso a paso, de modo que podrás trabajar con las últimas versiones estables de este servicio de bases de datos en tu viejo servidor o VPS Debian.
NOTA: Debian 8 Jessie alcanzó el fin de su ciclo de vida, por lo que PostgreSQL también dejó de actualizar su repositorio para esta distribución. En este tutorial explicamos cómo instalar la versión nativa de la distribución o versiones más modernas (hasta la 12) desde el archivo de PostgreSQL. En este sitio web puedes encontrar artículos similares a este para las versiones con soporte de Debian.
Tabla de contenidos
Antes de instalar PostgreSQL en Debian 8 Jessie
Para poder seguir los pasos de esta guía de instalación de PostgreSQL en Debian 8 Jessie sólo será necesario partir de los siguientes requisitos:
- Una instalación actualizada de Debian 8 Jessie.
- Acceso a línea de comandos con root o un usuario con permisos de sudo.
- Conexión a Internet.
Es importante destacar que PostgreSQL ya no ofrece soporte para Debian 8 Jessie, por lo que utilizaremos el repositorio archivado para obtener la última versión estable que se lanzó para este sistema.
Cómo instalar PostgreSQL en Debian 8 Jessie
Vamos a instalar PostgreSQL en Debian 8 desde el repositorio oficial de este servicio de bases de datos, ya que la versión incluida en los repositorios de la distribución, PostgreSQL 9.4, puede considerarse bastante obsoleta.
Repositorio de PostgreSQL para Debian 8 Jessie
Para configurar el repositorio de PostgreSQL en Debian 8 crearemos un nuevo archivo de repositorio de apt:
~$ sudo nano /etc/apt/sources.list.d/postgresql.list
El contenido será la siguiente línea:
deb http://apt-archive.postgresql.org/pub/repos/apt/ jessie-pgdg main
Guardamos los cambios y cerramos el archivo.
Añadimos la clave pública con la que se firman los paquetes del repositorio:
~$ wget --quiet -O- https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
Y actualizamos las listas de paquetes:
~$ sudo apt update
Instalar PostgreSQL en Debian 8
Al instalar PostgreSQL en Debian 8 desde el repositorio oficial debemos saber que disponemos de las versiones 8.4, 9.0, 9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 10, 11 y 12. En esta guía instalaremos la última versión estable disponible, la 12:
~$ sudo apt install -y postgresql-12 dbus
En unos instantes se descargarán e instalarán PostgreSQL y sus dependencias, así como el servicio D-Bus, creándose en Debian 8 un nuevo servicio llamado postgresql.service (o postgresql si prefieres la versión corta). El servicio PostgreSQL queda en ejecución y habilitado para iniciar automáticamente junto a Debian 8.
Podemos comprobar en cualquier momento el estado del servicio con el comando systemctl status postgresql
:
Cómo conectar a PostgreSQL en Debian 8
Podemos conectar a PostgreSQL en Debian 8 desde consola utilizando el cliente psql, que se incluye como dependencia del servicio, utilizando el usuario postgres que, por el momento, es el único que puede realizar la conexión:
~$ sudo -u postgres psql psql (12.3 (Debian 12.3-1.pgdg80+1)) Digite «help» para obtener ayuda. postgres=#
Además de realizar la conexión, observamos la versión de PostgreSQL instalada.
Para cerrar la sesión usaremos el comando exit:
postgres=# exit ~$
Cómo crear tu propio rol para PostgreSQL
Si no quieres tener que usar sudo y el usuario postgres para trabajar con el servicio, puedes crear tu propio rol administrador con el comando createdb. Aun así, todavía tendremos que usar a postgres para esta tarea:
~$ sudo -u postgres createuser --interactive Ingrese el nombre del rol a agregar: chacho ¿Será el nuevo rol un superusuario? (s/n) s ~$
Lanzamos el comando de forma interactiva para que nos pregunte el nombre del rol que queremos crear y si se va a tratar de un usuario administrador. El nombre del rol debería coincidir con el del usuario de Debian 8, para que este pueda conectar directamente al servicio.
Sólo falta crear una base de datos con el mismo nombre que el rol que acabamos de crear, ya que cada rol debe tener asociada una base de datos. Esta tarea ya sí la podemos realizar con nuestro usuario de trabajo (sin usar sudo con postgres):
~$ createdb chacho -O chacho
Ahora tenemos todo lo necesario: un usuario de Debian 8, un rol y una base de datos, todos con el mismo nombre. Por tanto ya podemos conectar a PostgreSQL con nuestro usuario de Debian 8:
~$ psql psql (12.3 (Debian 12.3-1.pgdg80+1)) Digite «help» para obtener ayuda. chacho=#
Trabajar con contraseñas
Podemos crear contraseñas de usuario con nuestro rol administrador, tanto para nosotros:
chacho=# \password Ingrese la nueva contraseña: Ingrésela nuevamente: chacho=#
Como para otros roles:
chacho=# \password paco Ingrese la nueva contraseña: Ingrésela nuevamente: chacho=#
Cómo configurar PostgreSQL en Debian 8 Jessie
Vamos a configurar PostgreSQL en Debian 8, teniendo en cuenta que los archivos de configuración se encuentran organizados en la ruta /etc/postgresql.
Aunque ya hemos creado las contraseñas, la configuración por defecto de PostgreSQL no las utiliza en conexiones locales. Puede que te interese cambiar este comportamiento para casos como usar una aplicación web, un frontend, etc. Para ello editamos el archivo pg_hba.conf:
~$ sudo nano /etc/postgresql/12/main/pg_hba.conf
Buscaremos esta línea:
local all all peer
Y cambiaremos peer por md5:
local all all md5
Guardamos los cambios y recargamos la configuración del servicio:
~$ sudo systemctl reload postgresql
Comprobaremos el funcionamiento conectando de nuevo con psql:
~$ psql Contraseña para usuario chacho: psql (12.3 (Debian 12.3-1.pgdg80+1)) Digite «help» para obtener ayuda. chacho=#
Ahora se nos pide contraseña para iniciar la sesión.
Acceso remoto
Por defecto el servicio PostgreSQL en Debian 8 Jessie sólo escucha conexiones locales. Para permitir el acceso remoto tendremos que realizar algún ajuste en el archivo postgresql.conf:
~$ sudo nano /etc/postgresql/12/main/postgresql.conf
Buscaremos la directiva listen_addresses:
... #listen_addresses = 'localhost' # what IP address(es) to listen on; ...
Comprobamos que la directiva está desactivada, así que la activaremos eliminando el carácter # al inicio de línea y cambiaremos el valor localhost por *:
... listen_addresses = '*' # what IP address(es) to listen on; ...
Guardamos y cerramos este archivo y editamos el archivo pg_hba.conf:
~$ sudo nano /etc/postgresql/12/main/pg_hba.conf
Buscamos las directivas host para IPv4 e IPv6 y justo a continuación de ellas añadimos una más como la siguiente:
... host all all all md5 ...
Guardamos los cambios y reiniciamos el servicio:
~$ sudo systemctl restart postgresql
Configurar el firewall UFW para PostgreSQL en Debian 8
Si tienes activado el firewall UFW en Debian 8, deberías añadir una regla para permitir las conexiones desde la red:
~$ sudo ufw allow 5432/tcp
Probando la conexión remota
Desde otro sistema en red ya podemos conectar al servicio PostgreSQL en la máquina Debian 8, utilizando un cliente como psql. Con el parámetro -h indicamos la dirección del servidor debian8.local.lan y con -U el rol con el que queremos conectar:
~$ psql -h debian8.local.lan -U chacho
Conclusión
Ahora que sabes cómo instalar PostgreSQL en Debian 8 Jessie ya puedes usar las versiones más recientes de este servicio para tus propios desarrollos o como base para potentes aplicaciones que lo necesiten.
En caso de que te hayan surgido preguntas, dudas, alguna sugerencia de mejora del tutorial, quieras notificar algún error, etc. puedes dejar un comentario apropiado.
Y si has conseguido hacer funcionar el servicio de bases de datos gracias a esta pequeña guía y quieres agradecérnoslo, puedes ayudarnos dejando una propina de 1 $ con PayPal:
¡Gracias!