En esta entrada explicamos cómo instalar PostgreSQL Server en Debian 11 Bullseye paso a paso, de forma que podrás trabajar con bases de datos relacionales en tu servidor o VPS Debian gracias a este potente servicio.
Tabla de contenidos
Antes de instalar PostgreSQL en Debian 11 Bullseye
Si estás interesado en seguir los pasos de esta guía de instalación de PostgreSQL en Debian 11 Bullseye sólo necesitas partir de estos simples requerimientos:
- Un sistema Debian 11 Bullseye actualizado.
- Acceso a línea de comandos con privilegios de sudo.
- Conexión a Internet.
Como con toda seguridad ya cumples estos requisitos, es el momento de regular la altura del escritorio y abrir tu terminal de consola favorita.
Cómo instalar PostgreSQL en Debian 11 Bullseye
Vamos a instalar PostgreSQL para Debian 11 desde los repositorios de la distribución, que nos ofrecen la versión 13, así que el primer paso será actualizarlos:
~$ sudo apt update
El paquete que necesitamos es postgresql-13, que instalamos con apt:
~$ sudo apt install -y postgresql-13
Tras la descarga e instalación de PostgreSQL y sus dependencias tenemos disponible un nuevo servicio en Debian 11, el servicio postgresql o postgresql.service, que queda directamente en ejecución y activado para su inicio automático.
Podemos comprobar el estado del servicio en cualquier momento con el comando systemctl status postgresql
:
PostgreSQL queda escuchando peticiones locales exclusivamente.
Cómo instalar el cliente de PostgreSQL para Debian 11
Si sólo necesitas el cliente de consola de PostgreSQL para Debian 11, el paquete que debes instalar es postgresql-client-13:
~$ sudo apt install -y postgresql-client-13
En caso de que hayas instalado el servidor, no será necesario instalar el cliente, ya que forma parte de las dependencias.
Conexión a PostgreSQL desde consola en Debian 11
Para conectar a PostgreSQL desde consola disponemos inicialmente del rol de PostgreSQL postgres y del usuario de Debian 11 postgres. Debido al tipo de autenticación usada, trabajaremos con sudo y el usuario postgres para poder utilizar el cliente psql y otras herramientas administrativas:
~$ sudo -u postgres psql psql (13.14 (Debian 13.14-0+deb11u1)) Digite «help» para obtener ayuda. postgres=#
Podemos cerrar la sesión con los comandos \q o exit.
Es muy probable que queramos disponer de nuestro propio rol administrador de PostgreSQL, así que crearemos un rol con el mismo nombre que nuestro usuario de trabajo de Debian 11:
~$ sudo -u postgres createuser chacho --interactive -P Ingrese la contraseña para el nuevo rol: Ingrésela nuevamente: ¿Será el nuevo rol un superusuario? (s/n) s
Hemos solicitado que se cree una contraseña y que se nos pregunte si deseamos que el nuevo rol sea superusuario.
Ya tenemos un rol y un usuario con los mismos nombres, así que podríamos conectar al servicio, pero como por defecto al iniciar sesión el servicio trata de abrir una base de datos con el mismo nombre que el rol, deberíamos crearla previamente:
~$ createdb chacho -O chacho
Creamos la base de datos concediendo la propiedad a nuestro rol. Observa que ya hemos empleado nuestro usuario y nuestro rol para invocar el comando createdb. Ahora, además, podremos conectar al servicio con el cliente psql:
~$ psql psql (13.14 (Debian 13.14-0+deb11u1)) Digite «help» para obtener ayuda. chacho=#
Habrás notado que a pesar de haber creado una contraseña no se nos ha solicitado. Esto se debe al sistema de autenticación actual, pero veremos cómo cambiar este comportamiento.
Cómo configurar PostgreSQL en Debian 11 Bullseye
Para configurar PostgreSQL en Debian 11 Bullseye trabajaremos sobre sus archivos de configuración ubicados en la ruta /etc/postgresql/13/main/. La mayoría de los ajustes requerirán recargar la configuración del servicio:
~$ sudo systemctl reload postgresql
Mientras que unos pocos precisan el reinicio del servicio:
~$ sudo systemctl restart postgresql
Uso de contraseña
Para activar el uso de contraseña, requerido por ciertas aplicaciones y administradores de PostgreSQL, editaremos el archivo pg_hba.conf:
~$ sudo nano /etc/postgresql/13/main/pg_hba.conf
Buscamos esta directiva local:
... local all all peer ...
Cambiamos el valor peer por md5:
... local all all md5 ...
Este cambio no afecta al rol postgres, ya que antes de esta directiva local existe otra exclusiva para dicho rol.
Guardamos los cambios y recargamos la configuración del servicio:
~$ sudo systemctl reload postgresql
Podemos comprobar que los cambios han quedado aplicados usando el cliente psql:
~$ psql Contraseña para usuario chacho: psql (13.14 (Debian 13.14-0+deb11u1)) Digite «help» para obtener ayuda. chacho=#
Ahora sí se pide la contraseña que establecimos al crear el rol.
Acceso remoto
Para poder conectar remotamente al servicio PostgreSQL de la máquina Debian 11 es necesario ajustar la configuración para que también atienda peticiones de red. Para ello editamos el archivo postgresql.conf:
~$ sudo nano /etc/postgresql/13/main/postgresql.conf
Buscamos la directiva listen_addresses:
... #listen_addresses = 'localhost' # what IP address(es) to listen on; ...
La activamos eliminando el carácter # inicial y cambiamos su valor por *:
... listen_addresses = '*' # what IP address(es) to listen on; ...
Hechos estos cambios, guardamos y cerramos el archivo.
Para activar el uso de contraseñas desde red, editaremos el archivo pg_hba.conf:
~$ sudo nano /etc/postgresql/13/main/pg_hba.conf
Tras la directiva host para las conexiones locales IPv6 añadimos otra para todas las conexiones de red en general:
... # Acceso desde red host all all all md5 ...
Guardamos los cambios y reiniciamos el servicio para aplicar todos estos cambios:
~$ sudo systemctl restart postgresql
En caso de tener activado el firewall en Debian 11 será necesario añadir la regla que permita las conexiones entrantes al servicio PostgreSQL:
~$ sudo ufw allow postgresql
Podemos probar el acceso remoto desde otra máquina en red que disponga de algún cliente de PostgreSQL, como psql. Indicaremos la dirección del servidor Debian 11 y el rol con el que queremos conectar.
Por ejemplo, la máquina Debian 11 sobre la que hemos preparado este tutorial es accesible en el subdominio debian11.local.lan, así que desde otro sistema en red podemos emplear el comando psql del siguiente modo:
~$ psql -h debian11.local.lan -U chacho
¡Funciona perfectamente!
Conclusión
Ahora que sabes cómo instalar PostgreSQL Server en Debian 11 Bullseye ya puedes desarrollar bases de datos o preparar la base para aplicaciones de terceros que requieren este motor de bases de datos relacionales.
En caso de dudas, preguntas, sugerencias, correcciones, etc. siéntete libre de dejar un comentario. Aunque los comentarios están sujetos a revisión (para evitar en la medida de lo posible el SPAM), se revisan prácticamente a diario.
Y si gracias a esta breve guía de instalación y configuración ya trabajas con bases de datos en tu propia máquina y quieres agradecérnoslo, puedes contribuir al mantenimiento de este sitio y la creación de más guías y tutoriales.
Puedes ayudarnos dejando una propina de 1 $ desde PayPal:
O, si te sientes especialmente agradecido, puedes invitarnos a un café:
¡Gracias!
Actualizado a la versión 13.14.
Buenas, después de seguir este artículo e instalar postgis 3.1.1 intenté instalar mobilitydb (siguiendo lo expuesto en https://github.com/MobilityDB/MobilityDB) y me aparece el siguiente error: Postgres needs to be configured with USE_FLOAT8_BYVAL. Cómo puedo instalar PostgreSQL con esta configuración habilitada. Muchas gracias.
Hola, Jesús. Hasta donde tengo entendido esa es una opción de compilación, no de configuración, lo que quiere decir que para que esté activa hay que obtener el código fuente de PostgreSQL y compilarlo con ese flag activado. A veces se obtienen este tipo de errores al mezclar elementos de diferentes arquitecturas o plataformas (por ejemplo, 32 y 64 bits). No sé si este será el caso.