Cómo instalar PostgreSQL en Ubuntu 20.04 LTS

En esta ocasión veremos cómo instalar PostgreSQL en Ubuntu 20.04 LTS Focal Fossa paso a paso, de manera que puedas trabajar con este potente servicio de bases de datos relacionales desde tu servidor o VPS Ubuntu.

Antes de instalar PostgreSQL en Ubuntu 20.04 LTS

Si tienes intención de completar esta guía de instalación de PostgreSQL en Ubuntu 20.04 LTS sólo debes tener en cuenta estos pocos requisitos básicos:

  • Una máquina Ubuntu 20.04 LTS Focal Fossa actualizada.
  • Acceso a línea de comandos con un usuario con permisos de sudo.
  • Conexión a Internet.

Como seguramente ya cumples los requisitos anteriores, es el momento de regular la altura adecuada de tu mesa y abrir tu terminal de consola favorita para empezar a trabajar.

Cómo instalar PostgreSQL en Ubuntu 20.04

A la hora de instalar PostgreSQL en Ubuntu 20.04 LTS hay que tener en cuenta que los repositorios de la distribución sólo ofrecen la versión 12 de este servicio de bases de datos. Algunas aplicaciones exigen versiones superiores, así que es buena idea instalar una versión más actualizada de PostgreSQL desde el repositorio oficial que, en el momento de actualizar este tutorial, ofrece hasta la 16.

Cómo configurar el repositorio oficial de PostgreSQL para Ubuntu 20.04

Al tratarse de un repositorio firmado, instalaremos su clave pública para apt:

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

Creamos un nuevo archivo de configuración de repositorio:

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

Y añadimos la siguiente línea:

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

Guardamos los cambios y listo.

Cómo instalar PostgreSQL

Empezamos actualizando las listas de paquetes:

~$ sudo apt update

Si queremos instalar la versión del repositorio de Ubuntu 20.04 el paquete que necesitamos es postgresql, mientras que si queremos instalar alguna versión del repositorio de PostgreSQL el paquete tendrá una denominación tipo postgresql-XX, donde XX es el número de versión.

Por ejemplo, si queremos instalar PostgreSQL 16 el paquete que necesitamos es postgresql-16:

~$ sudo apt install -y postgresql-16

Tras la descarga e instalación de PostgreSQL y sus dependencias se crea un nuevo servicio en Ubuntu 20.04, el servicio postgresql.service o simplemente postgresql, que queda inicializado, en ejecución y habilitado para su inicio automático con cada arranque del sistema.

Podemos comprobar el estado del servicio en cualquier momento con el comando systemctl status postgresql:

como instalar postgresql en ubuntu 20.04 lts focal fossa

Instalar el cliente de PostgreSQL en Ubuntu 20.04

Si sólo quieres instalar el cliente de PostgreSQL para Ubuntu 20.04 LTS el paquete que necesitas es postgresql-client (repositorio de Ubuntu) o postgresql-client-XX (repositorio de PostgreSQL) que incluye el cliente de consola psql. Si has instalado el servidor no será necesario instalar este paquete, puesto que es una de las dependencias.

Cómo probar el servicio PostgreSQL

Para conectar con el cliente psql al servicio PostgreSQL en Ubuntu 20.04, inicialmente sólo disponemos del usuario administrador postgres, que tendremos que usar a través de sudo:

~$ sudo -u postgres psql
psql (16.3 (Ubuntu 16.3-1.pgdg20.04+1))
Digite «help» para obtener ayuda.

postgres=#

Para cerrar la conexión usaremos el comando exit:

postgres=# exit

Cómo crear un rol de PostgreSQL para tu usuario de Ubuntu 20.04 LTS

Inicialmente sólo podemos usar el usuario postgres (creado durante la instalación del servicio) porque es el único que dispone de un rol de PostgreSQL. Puedes trabajar con sudo y postgres para administrar el servicio, pero quizás prefieras crear otro rol administrativo para tu usuario de Ubuntu 20.04.

Creamos el rol de PostgreSQL con el comando createuser:

~$ sudo -u postgres createuser --interactive instalador
¿Será el nuevo rol un superusuario? (s/n) s

Ahora disponemos de un rol administrativo con el mismo nombre que nuestro usuario de Ubuntu 20.04, por lo que no será necesario volver a usar postgres con sudo.

Además de un rol, necesitamos una base de datos de PostgreSQL con el mismo nombre que el rol (y el usuario de Ubuntu 20.04), que podemos crear con el comando createdb. Pero ahora ya podemos usar nuestro propio usuario y rol directamente:

~$ createdb instalador -O instalador

Ya tenemos todo lo necesario, un usuario de Ubuntu 20.04, un rol del servicio de bases de datos y una base de datos asociada al rol, todo ello con el mismo nombre. Podemos conectar directamente desde consola con psql:

~$ psql
psql (16.3 (Ubuntu 16.3-1.pgdg20.04+1))
Digite «help» para obtener ayuda.

instalador=#

De igual forma, podremos crear nuevos roles y bases de datos cada vez que lo necesitemos, como cuando lo requieran ciertas aplicaciones que instalemos:

~$ createuser juan
~$ createdb juan -O juan

Configurar PostgreSQL en Ubuntu 20.04 LTS

Vamos a ver cómo configurar PostgreSQL en Ubuntu 20.04 a través de algunos usos comunes, teniendo en cuenta que los archivos de configuración de este servicio se organizan bajo la ruta /etc/postgresql/.

Uso de contraseñas

Por defecto el acceso local a PostgreSQL no requiere contraseña, como ya hemos visto, aunque es posible que queramos activar su uso.

El primer paso será crear las contraseñas, para lo que conectaremos con el servicio:

~$ psql

Crearemos una contraseña para nuestro rol con el comando \password:

instalador=# \password
Ingrese nueva contraseña para usuario «instalador»:
Ingrésela nuevamente:
instalador=#

Como nuestro rol es administrativo, podemos asignar contraseñas para otros roles:

instalador=# \password juan
Ingrese nueva contraseña para usuario «juan»:
Ingrésela nuevamente:
instalador=#

No basta con crear las contraseñas, es necesario activar su uso realizando algún ajuste en el archivo pg_hba.conf:

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

Observa que en el comando anterior la ruta del archivo contiene el número de versión de PostgreSQL, por lo que si has instalado una versión distinta tendrás que modificar dicha ruta adecuadamente.

Buscamos la siguiente línea:

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

El valor peer indica que la autenticación local se produce buscando un rol con el mismo nombre que el del usuario de Ubuntu 20.04 que realiza la conexión. Si cambiamos peer por md5 (versiones antiguas de PostgreSQL) o scram-sha-256:

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

La autenticación se producirá a través de contraseña (la que creamos anteriormente).

Usa md5 ó scram-sha-256 dependiendo de si en el archivo de configuración hay otras líneas con uno u otro sistema.

Guardamos los cambios y recargamos la configuración del servicio PostgreSQL.

~$ sudo systemctl reload postgresql

Al conectar de nuevo al servicio con nuestro usuario se nos solicitará la contraseña:

~$ psql
Contraseña para usuario instalador:
psql (16.3 (Ubuntu 16.3-1.pgdg20.04+1))
Digite «help» para obtener ayuda.

instalador=#

Acceso remoto a PostgreSQL en Ubuntu 20.04 LTS

Por defecto PostgreSQL en Ubuntu 20.04 sólo escucha conexiones locales. Si queremos que acepte peticiones desde red tendremos que realizar ajustes de configuración en postgresql.conf (se aplica lo dicho anteriormente sobre la ruta de este archivo):

~$ sudo nano /etc/postgresql/16/main/postgresql.conf

Buscamos la directiva listen_addresses:

...
#listen_addresses = 'localhost'         # what IP address(es) to listen on;
...

Esta directiva está desactivada, así que eliminaremos el carácter # al inicio de línea y sustituiremos el valor localhost por *:

...
listen_addresses = '*'                  # what IP address(es) to listen on;
...

Guardamos los cambios.

Además de este ajuste, hay que permitir las conexiones en el archivo pg_hba.conf:

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

Y en la zona de las directivas host añadimos esta otra a continuación:

...
host    all             all             all                     scram-sha-256
...

Guardamos los cambios y reiniciamos el servicio PostgreSQL para aplicar todos estos cambios:

~$ sudo systemctl restart postgresql

Configuración del firewall

Si tienes activado el firewall UFW en Ubuntu 20.04 LTS será necesario añadir una regla para PostgreSQL si quieres permitir las conexiones desde red:

~$ sudo ufw allow postgresql

Cómo probar el acceso remoto a PostgreSQL en Ubuntu 20.04

Desde otro sistema en red podemos comprobar la conexión mediante un cliente de PostgreSQL como psql, indicando con el parámetro -h la dirección IP o nombre DNS del servidor Ubuntu 20.04 y con el parámetro -U el rol con el que queremos conectar:

~$ psql -h ubuntu2004.local.lan -U instalador

instalar y configurar postgresql en ubuntu 20.04 lts focal fossa

¡Así de fácil!

Conclusión

Ahora que sabes cómo instalar PostgreSQL en Ubuntu 20.04 LTS Focal Fossa ya puedes trabajar con este magnífico motor de bases de datos relacionales, tanto para tus propios desarrollos como para ser la base o requerimiento de terceras aplicaciones.

Si tienes alguna duda o pregunta, crees que el artículo necesita mejoras o actualización, quieres notificar algún error, etc. puedes dejar un comentario.

¡Apoya comoinstalar.me!

¿Ya funciona este potente servicio de bases de datos relacionales en tu propia máquina gracias a nuestra guía rápida de instalación y configuración? Si es así y te apetece agradecérnoslo es posible hacerlo mediante una mínima contribución destinada al mantenimiento de este sitio y la elaboración de próximos tutoriales y guías.

Puedes ayudarnos dejando tan sólo 1 $ de propina en PayPal con la calderilla que no usas:

O, si te sientes especialmente agradecido, puedes invitarnos a un café:

¡Gracias!

Valora esta entrada

5/5 - (5 votos)

6 comentarios en «Cómo instalar PostgreSQL en Ubuntu 20.04 LTS»

  1. Perdone, al realizar las configuraciones en el archivo /etc/postgresql/12/main/pg_hba.conf, al hacer la autenticación no me acepta la contraseña.

    Responder
    • Hola, Milton. No das mucha información del problema, como lo que hiciste exactamente, cuáles son los mensajes de error que obtienes, etc.

      Si se trata de que simplemente se rechaza la contraseña de tu usuario puedes probar con lo siguiente:

      • Edita el archivo pg_hba.conf de PostgreSQL en Ubuntu 20.04
      • Cambia en la línea «local all all md5» el valor md5 por peer
      • Guarda los cambios
      • Recarga la configuración del servicio
      • Inicia sesión con el cliente psql (no te debería pedir contraseña)
      • Crea una contraseña con el comando «\password» asegurándote de teclearla correctamente las dos veces
      • Edita de nuevo pg_hba.conf
      • Cambia en la línea «local all all peer» el valor peer por md5
      • Guarda los cambios
      • Recarga la configuración del servicio
      • Inicia sesión con psql, probando la nueva contraseña
      Responder

Deja un comentario