Cómo instalar PostgreSQL en Ubuntu 18.04 LTS

Esta entrada la dedico a ver cómo instalar PostgreSQL en Ubuntu 18.04 LTS Bionic Beaver paso paso, un sistema de bases de datos bastante utilizado y que puede ser interesante conocer, ya que algunas aplicaciones lo requieren como backend. Al final de esta guía tendrás el servicio instalado y funcionando en tu servidor o VPS Ubuntu, con tu propio usuario administrador.

Antes de instalar PostgreSQL en Ubuntu 18.04 LTS

Para seguir esta guía de instalación de PostgreSQL en Ubuntu 18.04 LTS necesitas cumplir los siguientes requisitos:

  • Un sistema Ubuntu 18.04 LTS Bionic Beaver actualizado.
  • Conexión a Internet.
  • Acceso a línea de comandos con un usuario con privilegios de root o sudo.

También necesitamos algunas herramientas que podemos obtener desde los repositorios de Ubuntu 18.04, por lo que actualizamos la información de los mismos:

~$ sudo apt update

E instalamos los paquetes necesarios:

~$ sudo apt install -y gnupg

Cómo configurar el repositorio de PostgreSQL para Ubuntu 18.04 LTS

Debido a la antigüedad del sistema, vamos a configurar el repositorio oficial de PostgreSQL para Ubuntu 18.04 LTS, ofrecido desde el sitio oficial del proyecto, ya que así podremos disfrutar de las últimas versiones de este servicio de bases de datos, hasta la 14 en el momento de actualizar esta guía, en lugar de la 10 disponible en los repositorios de Ubuntu.

Crearemos un archivo de configuración para el nuevo repositorio:

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

El contenido será la siguiente línea:

deb http://apt.postgresql.org/pub/repos/apt bionic-pgdg main

Ya podemos guardar el archivo.

También debemos instalar la clave pública para verificar las firmas de los paquetes procedentes del repositorio:

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

Cómo instalar PostgreSQL en Ubuntu 18.04 LTS

Vamos a instalar PostgreSQL en Ubuntu 18.04 LTS usando los paquetes disponibles ya sea en el propio repositorio de Ubuntu o, si lo has instalado, en el repositorio oficial de PostgreSQL. Para ello la primera acción debería ser actualizar las listas de paquetes:

~$ sudo apt update

Si instalamos el paquete postgresql obtendremos la última versión disponible en Ubuntu (la 10.18 en este momento) o la última versión estable del repositorio de PostgreSQL (la 14.x en este momento) si lo hemos configurado:

~$ sudo apt -y install postgresql

En caso de querer una versión concreta del repositorio de PostgreSQL podemos indicarla en el nombre del paquete. Por ejemplo, para PostgreSQL 13:

~$ sudo apt -y install postgresql-13

Están disponibles las versiones 9 (desde la 9.0 a la 9.6), 10, 11, 12, 13 y 14. En este tutorial instalaremos la última versión disponible, la 14.

En cualquier caso se instalan el paquete principal y todas sus dependencias entre las que se encuentran además los clientes y herramientas de consola.

Durante la instalación se crea el servicio postgresql.service o, la versión breve, postgresql.

A diferencia de otras plataformas, en Ubuntu 18.04 durante la instalación queda inicializada la base de datos. Al no requerir una inicialización manual, el instalador deja el servicio activado, por lo que PostgreSQL iniciará con cada arranque de Ubuntu. Además el servicio queda automáticamente iniciado, por lo que ya es posible conectar con el mismo para trabajar.

En cualquier momento puedes comprobar el estado del servicio PostgreSQL en Ubuntu 18.04 con el comando systemctl status postgresql:

como instalar postgresql en ubuntu 18.04 lts bionic beaver

Cómo crear tu propio usuario o rol de PostgreSQL en Ubuntu 18.04 LTS

La instalación de PostgreSQL crea un usuario y grupo postgres en Ubuntu 18.04. Este usuario queda vinculado con el rol postgres de PostgreSQL, así que en principio este es el único usuario con el que se puede trabajar en PostgreSQL.

Nuestra primera acción podría ser crear nuestro propio rol de PostgreSQL para asociar con nuestro usuario de Ubuntu 18.04.

A través de sudo usaremos la herramienta createuser para crear nuestro rol:

~$ sudo -u postgres createuser --interactive
Ingrese el nombre del rol a agregar: chacho
¿Será el nuevo rol un superusuario? (s/n) s

Al usar el argumento –interactive la herramienta createuser nos preguntará de forma interactiva el nombre del nuevo rol, si debe ser o no un rol administrativo, etc.

Recuerda que para nuestro objetivo (crear un rol de PostgreSQL asociado a nuestro usuario en Ubuntu) debemos dar el mismo nombre que el usuario al nuevo rol.

Necesitamos una base de datos con el mismo nombre que el nuevo rol, por tanto usaremos de modo parecido el comando createdb, a través de sudo y el usuario postgres:

~$ sudo -u postgres createdb chacho -O chacho

Ya tenemos un rol y una base de datos con el mismo nombre que nuestro usuario de Ubuntu, por lo tanto ya podemos usar directamente (sin sudo) los comandos createuser y createdb. Pero también podemos utilizar directamente el cliente psql:

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

chacho=#

En el cliente ya podemos trabajar con sentencias SQL o usar comandos como:

  • \d para mostrar relaciones y tablas.
  • \h para mostrar ayuda sobre comandos y sentencias SQL.
  • \q para salir del cliente.
  • etc.

De la misma forma que acabamos de hacer, usando nuestro nuevo rol administrador, podemos crear nuevos roles y bases de datos necesarios para otras aplicaciones que necesiten trabajar sobre PostgreSQL.

Cómo configurar PostgreSQL en Ubuntu 18.04 LTS

Vamos a configurar PostgreSQL en Ubuntu 18.04 LTS mediante algunos casos prácticos que se dan prácticamente en todas las instalaciones.

Activar autenticación por contraseña

Hemos visto que se puede acceder al servicio sin necesidad de contraseña, pero en muchos entornos lo deseable es que exista autenticación. Si ya tenemos un usuario creado podemos crearle una contraseña una vez iniciada sesión con el comando password:

...
=# \password
Ingrese la nueva contraseña:
Ingrésela nuevamente:
=#

Y si nuestro usuario es administrador se puede usar el mismo comando para crear contraseñas para otros roles existentes:

...
=# \password paco
Ingrese la nueva contraseña:
Ingrésela nuevamente:
=#

Desde línea de comandos podremos crear roles con contraseña utilizando el parámetro -P de createuser:

~$ sudo -u postgres createuser -P juan
Ingrese la contraseña para el nuevo rol:
Ingrésela nuevamente:
~$

Sin embargo, el hecho de que el usuario tenga una contraseña asignada no significa que se le solicite, como podemos comprobar si hemos creado una contraseña para nuestro rol asociado y volvemos a iniciar sesión:

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

chacho=#

Será necesario editar el archivo pg_hba.conf de PostgreSQL para realizar algunos ajustes (modifica la ruta para tu versión de PostgreSQL, si es necesario):

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

Si has instalado otra versión de PostgreSQL deberás sustituir en la ruta del comando anterior el subdirectorio 14 por tu el que corresponda a tu versión (en el caso de la versión del repositorio de Ubuntu 18.04 sería 10).

Buscamos esta sección:

...
# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

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

En la segunda directiva local cambiaremos peer por scram-sha-256 o md5 en versiones anteriores (fíjate si en el resto del archivo aparece alguno de los dos métodos para saber cuál usar en caso de duda):

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

De esta forma seguiremos usando sudo para el rol postgres pero todos los demás requerirán el uso de contraseñas. Si quieres que postgres use contraseña créala primero y después cambia peer por scram-sha-256 o md5 en su directiva local.

Una vez guardados los cambios y cerrado el archivo, habrá que recargar la configuración del servicio:

~$ sudo systemctl reload postgresql

Ahora, al iniciar sesión con nuestro usuario se nos solicitará la contraseña:

~$ psql
Contraseña para usuario chacho:
psql (14.0 (Ubuntu 14.0-1.pgdg18.04+1))
Digite «help» para obtener ayuda.

=#

Acceso remoto a PostgreSQL en Ubuntu 18.04 LTS

Si queremos permitir el acceso remoto a PostgreSQL en Ubuntu 18.04 LTS tendremos que realizar algún ajuste en el archivo postgresql.conf:

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

Buscamos la directiva listen_addresses:

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

La directiva está desactivada, por lo que toma el valor por defecto que sólo permite conexiones locales. Eliminaremos el carácter # al inicio de línea y cambiaremos localhost por *:

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

Guardamos los cambios y cerramos el archivo.

Casi con total seguridad, si permitimos acceso remoto a PostgreSQL querremos que el acceso sea mediante contraseña, por lo que activaremos este tipo de acceso en pg_hba.conf:

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

Encontraremos un bloque de directivas host como este:

...
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
...

Añadiremos a continuación de las líneas anteriores una nueva directiva host (usa md5 en lugar de scram-sha-256 si es el sistema utilizado en tu versión de PostgreSQL):

...
# Acceso remoto
host    all             all             all                     scram-sha-256
...

Guardamos los cambios, cerramos el archivo y reiniciamos el servicio para aplicar todos estos cambios:

~$ sudo systemctl restart postgresql

A partir de este momento PostgreSQL queda a la escucha de conexiones desde red.

Cómo configurar el firewall

Si tienes activado el firewall UFW en Ubuntu 18.04 LTS será necesario añadir una regla para permitir las conexiones entrantes a PostgreSQL:

~$ sudo ufw allow postgresql

Cómo acceder remotamente a PostgreSQL en Ubuntu 18.04 LTS

Para probar el acceso remoto al servicio PostgreSQL de nuestra máquina Ubuntu 18.04 estableceremos conexión desde red con cualquier tipo de cliente, por ejemplo el ya conocido cliente de consola psql., indicando con el parámetro –host la dirección IP o nombre DNS del servidor Ubuntu 18.04 LTS donde está corriendo PostgreSQL, y con el parámetro -U el rol con el que queremos conectar:

~$ psql --host ubuntu64.local.lan -U chacho

instalar y configurar postgresql en ubuntu 18.04 lts bionic beaver

Y se establecerá conexión, pudiendo trabajar como si lo hiciésemos localmente.

Conclusión

Ahora que sabes instalar PostgreSQL en Ubuntu 18.04 LTS Bionic Beaver ya puedes poner en funcionamiento este servicio para tus desarrollos o para soportar el backend de las aplicaciones que requieran un backend en este motor de bases de datos.

Si tienes cualquier consulta, sugerencia, notificación, etc. no dudes en dejar un comentario.

¡Apoya comoinstalar.me!

¿Te gusta esta guía de PostgreSQL en Ubuntu 18.04 LTS Bionic Beaver? ¿Quieres acceder a futuros contenidos de este tipo? Si te apetece contribuir con una mínima donación al mantenimiento de este sitio, te estaremos muy agradecidos, y puedes hacerlo dejando 1 $ de propina en PayPal:

O, si te sientes especialmente agradecido, invitándonos a un café:

¡Gracias!

Valora esta entrada

5/5 - (1 voto)

7 comentarios en «Cómo instalar PostgreSQL en Ubuntu 18.04 LTS»

Deja un comentario

Ads Blocker Image Powered by Code Help Pro

¡Detectado un bloqueador de publicidad!

Hemos detectado que está usando extensiones para bloquear anuncios prublicitarios. Por favor, ayúdenos desactivando dicho bloqueador para este sitio web. ¡Gracias!