Cómo instalar PostgreSQL en Debian 9 Stretch

En esta entrada mostraremos cómo instalar PostgreSQL en Debian 9 Stretch paso a paso, un motor de bases de datos de código abierto que puede resultar complicado de instalar si vienes de utilizar otras bases de datos más populares. Al final de esta guía habrás logrado instalar y poner en funcionamiento PostgreSQL Server en tu servidor o VPS Debian y podrás conectar desde el cliente de consola con tu usuario.

NOTA: Debian 9 Stretch 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 14) desde el archivo de PostgreSQL. En este sitio web puedes encontrar artículos similares a este para las versiones con soporte de Debian.

Antes de instalar PostgreSQL en Debian 9 Stretch

Para poder instalar PostgreSQL Server en Linux Debian 9 Stretch siguiendo esta guía necesitamos cumplir los siguientes requerimientos mínimos:

  • Un sistema Debian 9 GNU/Linux Stretch actualizado.
  • Un usuario con permisos de sudo o el mismo root (menos recomendable).
  • Conexión a Internet.

Cómo instalar PostgreSQL en Debian 9

Podríamos instalar PostgreSQL en Debian 9 Stretch usando los paquetes disponibles en el repositorio oficial de la distribución, pero eso nos relegaría a la versión 9.6, así que si queremos trabajar con PostgreSQL 12, 13, ó 14 tendremos que instalar el repositorio oficial.

Instalar el repositorio de PostgreSQL 14 para Debian 9

En el caso de querer disponer de las versiones finales de PostgreSQL para Debian 9 Stretch, debemos instalar algunas herramientas que necesitaremos seguidamente, así que actualizamos la información de los repositorios:

~$ sudo apt update

E instalamos los paquetes necesarios:

~$ sudo apt install -y apt-transport-https

Creamos el archivo de configuración del repositorio:

~$ sudo nano /etc/apt/sources.list.d/postgresql.org.list

Con la siguiente línea como contenido:

deb https://apt-archive.postgresql.org/pub/repos/apt/ stretch-pgdg main

Guardamos y cerramos el archivo.

Finalmente, descargamos e instalamos la clave pública para comprobar las firmas de los paquetes procedentes de este repositorio:

~$ wget -qO- https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add

Instalar PostgreSQL

Independientemente de la versión de PostgreSQL que vayamos a instalar en Debian 9 Stretch, la primera acción será actualizar la información de los repositorios:

~$ sudo apt update

Con las listas de paquetes actualizadas ya podemos descargar e instalar PostgreSQL con apt, siendo postgresql el paquete que necesitamos para disponer de la última versión (o la versión de la distribución si no has instalado el repositorio oficial):

~$ sudo apt -y install postgresql

Si has instalado el repositorio oficial puedes elegir una versión concreta si fuese necesario (sustituye XX en el siguiente comando por 8.2, 8.3, 8.4, 9.0, 9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 10, 11, 12, 13 ó 14):

~$ sudo apt -y install postgresql-XX

A diferencia de otras versiones de Linux y sistemas Unix, en Debian 9 la instalación deja PostgreSQL Server perfectamente inicializado y funcionando. Mientras que en otros sistemas una vez instalado PostgreSQL es necesario inicializar la base de datos antes de lanzar el servicio por primera vez, en Debian 9 ese trabajo lo hace apt por nosotros. De hecho, puedes comprobar que el servicio está iniciado y disponible con el comando systemctl status postgresql:

como instalar postgresql en debian 9 stretch

Cómo conectar con PostgreSQL desde consola en Debian 9

Durante la instalación de PostgreSQL en Debian 9 se crea un usuario y un grupo postgres con los que funciona el servicio. Pero además este usuario postgres es administrador por lo que inicialmente es el único con el que podemos conectar al servicio.

PostgreSQL trabaja con un sistema de roles, que vienen a ser algo parecido a los usuarios de otros sistemas de bases de datos. Si intentamos conectar con el cliente psql y nuestro usuario de trabajo de Debian 9 recibiremos este mensaje:

~$ psql
psql: error: falló la conexión al servidor en el socket «/var/run/postgresql/.s.PGSQL.5432»: FATAL:  no existe el rol «chacho»

Ni siquiera es posible conectar como root a través de sudo:

~$ sudo psql
psql: error: falló la conexión al servidor en el socket «/var/run/postgresql/.s.PGSQL.5432»: FATAL:  no existe el rol «root»

La única forma de conectar con el servidor PostgreSQL es a través del usuario postgres con sudo:

~$ sudo -u postgres psql
psql (14.5 (Debian 14.5-1.pgdg90+1))
Digite «help» para obtener ayuda.

postgres=#

Puedes cerrar la conexión con el comando \q en PostgreSQL 9, o exit en PostgreSQL 14.

Cómo crear tu rol de PostgreSQL en Debian 9

Vamos a crear un nuevo rol de PostgreSQL para nuestro usuario de trabajo de Debian 9. Para ello usaremos el comando createuser de PostgreSQL como usuario postgres:

~$ sudo -u postgres createuser --interactive -P chacho
Ingrese la contraseña para el nuevo rol:
Ingrésela nuevamente:
¿Será el nuevo rol un superusuario? (s/n) s
~$

Ya tenemos creado un rol con el mismo nombre que nuestra cuenta de Debian 9, en este caso además se tratará de un superusuario, para poder administrar otros usuarios y bases de datos sin necesidad de recurrir al usuario postgres con sudo. Sin embargo, aún no podemos conectar con el cliente psql, si lo intentas obtendrás un error:

~$ psql
psql: error: falló la conexión al servidor en el socket «/var/run/postgresql/.s.PGSQL.5432»: FATAL:  no existe la base de datos «chacho»

Esto ocurre porque cuando se inicia sesión en PostgreSQL se vincula el rol correspondiente con una base de datos con el mismo nombre que dicho rol. En este caso intentamos acceder con el rol chacho, pero aún no existe la base de datos chacho. Así que usaremos por primera vez nuestro nuevo rol para crear esa base de datos mediante el comando createdb:

~$ createdb chacho -O chacho

Con el parámetro -O otorgamos la propiedad de la base de datos al rol que queramos. Lo hacemos así porque queremos que el rol sea el propietario de su propia base de datos.

Tenemos rol, tenemos base de datos… es hora de iniciar sesión con el cliente psql y nuestra cuenta de Debian 9 Stretch:

~$ psql
...

chacho=#

Observa que a pesar de que creamos el rol con contraseña, no se nos ha solicitado para conectar. Esto ocurre porque por defecto la autenticación local no la necesita, basta con conectar el usuario que inicia sesión con el rol que tenga el mismo nombre.

Y ya podemos empezar a usar el lenguaje SQL para crear y modificar tablas, insertar y editar datos, realizar consultas, etc. Por ejemplo para crear una tabla de pruebas en nuestra base de datos, lo hacemos mediante SQL:

chacho=# create table pruebas ();
CREATE TABLE
chacho=# \d
       Listado de relaciones
 Esquema | Nombre  | Tipo  | Dueño
---------+---------+-------+--------
 public  | pruebas | tabla | chacho
(1 fila)

chacho=#

Con «create table…» creamos la tabla y con el comando \d vemos las tablas de la base de datos. El uso de SQL y los comandos del cliente psql exceden del alcance de esta pequeña guía de instalación. De todas formas, el comando \h o \h comando te proporcionará mucha ayuda sobre los comandos disponibles.

Activar el uso de contraseñas en PostgreSQL

Acabamos de comprobar que a pesar de crear contraseñas no se tienen en cuenta, ya que en la configuración actual de PostgreSQL no se pide contraseña en modo local.

En el archivo pg_hba.conf es donde se configura el modo y circunstancias en que se autentican los usuarios, así que lo editaremos para hacer el cambio que necesitamos:

~$ sudo nano /etc/postgresql/9.6/main/pg_hba.conf

O si has instalado PostgreSQL 14:

~$ sudo nano /etc/postgresql/14/main/pg_hba.conf

Buscaremos esta línea:

...
# "local" is for Unix domain socket connections only
local   all             all                                     peer
...

Y cambiaremos el valor peer por md5 (para PostgreSQL 9) ó scram-sha-256 (para PostgreSQL 14):

...
local   all             all                                     scram-sha-256
...

Es necesario recargar la configuración del servicio para aplicar los cambios:

~$ sudo systemctl reload postgresql

Ahora, al iniciar sesión con el cliente psql se solicitará la contraseña de nuestro rol:

~$ psql
Contraseña para usuario chacho:
...

chacho=#

A partir de ahora es fácil crear bases de datos y roles con contraseña para aquellas aplicaciones que necesiten trabajar con PostgreSQL sobre nuestro sistema Debian 9 Stretch.

Conclusión

Ahora que ya sabes cómo instalar PostgreSQL en Debian 9 ya puedes empezar a trabajar con SQL para tus propios desarrollos o crear bases de datos para aplicaciones y sistemas que se apoyan en este motor de bases de datos de código abierto.

Si tienes alguna pregunta, duda, sugerencia o quieres informar de algún error puedes dejar un comentario.

Y si te ha servido esta guía para poner por fin en marcha PostgreSQL sobre Debian 9 y quieres agradecérnoslo, puedes hacerlo dejando 1 $ de propina en PayPal:

¡Gracias!

5/5 - (2 votos)

4 comentarios en «Cómo instalar PostgreSQL en Debian 9 Stretch»

  1. Muy bueno, muchas gracias. Vendría bien alguna lista de (por ejemplo) las cinco cosas más usadas de PostgreSQL después de ser instalado, o algo así. Se me ha hecho corto y me he quedado con ganas de más.

    Responder

Deja un comentario

Este sitio esta protegido por reCAPTCHA y laPolítica de privacidady losTérminos del servicio de Googlese aplican.

El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.