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 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.
Cómo instalar PostgreSQL en Ubuntu 20.04
Vamos a instalar PostgreSQL en Ubuntu 20.04 LTS desde los repositorios de la propia distribución, y es que debido a lo reciente del lanzamiento de Ubuntu 20.04 está incluida la versión 12 de PostgreSQL.
Empezamos actualizando las listas de paquetes:
~$ sudo apt update
El paquete que necesitamos es postgresql-12 que instalaremos con apt:
~$ sudo apt install -y postgresql-12
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 de Ubuntu 20.04.
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-12, que incluye el cliente de consola psql. Si has instalado el servidor no será necesario instalar este paquete, puesto que es una de las dependecias.
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 (12.6 (Ubuntu 12.6-0ubuntu0.20.04.1)) Type "help" for help. 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 chacho Shall the new role be a superuser? (y/n) y
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 chacho -O chacho
Ya tenemos todo lo necesario, un usuario de Ubuntu 20.04, rol de PostgreSQL y base de datos todo con el mismo nombre. Podemos conectar directamente desde consola con psql:
~$ psql psql (12.6 (Ubuntu 12.6-0ubuntu0.20.04.1)) Type "help" for help. chacho=#
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. Es importante saber que los archivos de configuración de PostgreSQL en Ubuntu 20.04 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:
chacho=# \password Enter new password: Enter it again: chacho=#
Como nuestro rol es administrativo, podemos asignar contraseñas para otros roles:
chacho=# \password juan Enter new password: Enter it again: chacho=#
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/12/main/pg_hba.conf
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:
... local all all md5 ...
La autenticación se producirá a través de contraseña (la que creamos anteriormente).
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 Password for user chacho: psql (12.6 (Ubuntu 12.6-0ubuntu0.20.04.1)) Type "help" for help. chacho=#
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:
~$ sudo nano /etc/postgresql/12/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/12/main/pg_hba.conf
Y en la zona de las directivas host añadimos esta otra:
... host all all all md5 ...
Guardamos los cambios y reiniciamos el servicio PostgreSQL para aplicar todos estos cambios:
~$ sudo systemctl restart postgresql
Configurar el firewall UFW en Ubuntu 20.04 para PostgreSQL
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 chacho
¡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 el servicio en tu máquina gracias a esta guía de instalación de PostgreSQL en Ubuntu 20.04 LTS Focal Fossa? Si es así y te apetece agracecérmelo, puedes contribuir de varias maneras al mantenimiento de este sitio y la elaboración de próximas guías de Ubuntu 20.04 y PostgreSQL, como por ejemplo invitándome a un café:
O dejando 1 $ de propina en PayPal con la calderilla que no usas:
¡Gracias!
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.
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: