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.
Contenido
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
:
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
¡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!
Actualizado para incluir las versiones del repositorio oficial de PostgreSQL para Ubuntu 20.04 Focal Fossa, hasta la 16.3.
Actualizado a la versión 12.10.
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.
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:
Gracias.
El paso a paso muy claro, y está padre que se vinculen los temas entre sí.
De nada, Rene. Me alegra que te resulte útil.