Cómo instalar PostgreSQL en Fedora 30/31/32

En esta ocasión vamos a aprender cómo instalar PostgreSQL en Fedora 30, 31 y 32 paso a paso. Este motor de bases de datos tiene una importante cuota de usuarios, así que si necesitas ponerlo en marcha en tu servidor o VPS Fedora, al final de esta guía tendrás el servicio PostgreSQL listo para tus desarrollos y aplicaciones.

Antes de instalar PostgreSQL en Fedora 30/31/32

Si quieres seguir esta guía de instalación de PosgreSQL en Fedora 30, 31 y 32 deberías cumplir al menos estos requerimientos:

  • Un sistema Fedora 30, 31 ó 32 actualizado.
  • Acceso a Internet para descargar los paquetes necesarios.
  • Un usuario con privilegios de administración (sudo) o el mismo root.

Si ya lo tienes todo preparado, regula correctamente la altura de tu escritorio y abre tu terminal de consola favorita.

Cómo instalar PostgreSQL en Fedora 30/31/32

Para instalar PostgreSQL en Fedora 30, 31 y 32 usaremos los paquetes disponibles en el repositorio de la misma distribución. Esto es así porque al haber alcanzado Fedora 30, 31 y 32 el fin de su ciclo de vida, PostgreSQL ha retirado el soporte oficial y no es posible usar los repositorios oficiales.

Las versiones de las que disponemos son las siguientes:

  • Fedora 30: PostgreSQL 11.7
  • Fedora 31: PostgreSQL 11.8
  • Y Fedora 32: PostgreSQL 12.6

Lo aconsejable siempre que vamos a instalar nuevo software procedente de los repositorios de Fedora es actualizar la información de las listas de paquetes e incluso los paquetes ya instalados:

~$ sudo yum -y update

El paquete que necesitamos es postgresql-server, así que lo descargaremos con yum:

~$ sudo yum install -y postgresql-server

Una vez descargados e instalados los paquetes y dependencias se crea un nuevo servicio en el sistema llamado postgresql.service o más brevemente postgresql. Podemos usar indistintamente un nombre u otro.

La instalación no activa ni inicia el servicio, por tanto la primera tarea es activar PostgreSQL para que inicie con el arranque de Fedora 30, 31 y 32:

~$ sudo systemctl enable postgresql

A diferencia de otros sistemas de bases de datos, o incluso el mismo PostgreSQL en otros sistemas operativos, es necesario inicializar la base de datos antes de arrancar el servicio. Para ello tenemos que lanzar el comando postgresql-setup con la opción initdb:

~$ sudo /usr/bin/postgresql-setup --initdb
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log

Con toda la estructura necesaria inicializada, ya podemos iniciar el servicio para poder interactuar con él, cosa que haremos con el comando start de systemctl:

~$ sudo systemctl start postgresql

El servicio ya está corriendo, como podemos comprobar fácilmente con systemctl status postgresql:

como instalar postgresql en fedora 30, 31 y 32

Cómo saber la versión instalada de PostgreSQL en Fedora 30, 31 y 32

Si necesitas saber qué versión de PostgreSQL has instalado en Fedora 30, 31 y 32, puedes usar el comando pg_ctl en consola:

~$ pg_ctl -V
pg_ctl (PostgreSQL) 11.7

Cómo instalar el cliente de PostgreSQL en Fedora 30, 31 y 32

Al instalar el servidor de baes de datos automáticamente se instala como dependencia el cliente, pero si lo que quieres es únicamente instalar el cliente de PostgreSQL en Fedora 30, 31 y 32 el paquete que necesitas es postgresql:

~$ sudo yum install -y postgresql

Cómo crear tu propio rol de PostgreSQL en Fedora 30/31/32

El servicio postgresql corre con los permisos del usuario y grupo postgres creados durante la instalación.

En principio este usuario postgres sería el único posible con el que trabajar (a través de sudo), ya que debido a las particularidades de PostgreSQL el usuario de Fedora 30, 31 y 32 que establece la conexión se asocia a un rol de PostgreSQL con el mismo nombre. Esto quiere decir que además del usuario postgres de Fedora 30, 31 y 32 existe un rol de PostgreSQL también llamado postgres.

Puedes probar el usuario postgres conectando con el cliente psql:

~$ sudo -iu postgres psql
psql (xx.x)
Digite «help» para obtener ayuda.

postgres=# exit
~$

Para cerrar la sesión usa el comando \q o exit.

Vamos a crear un rol para nuestro usuario de trabajo habitual. Utilizaremos sudo con el usuario postgres para llevar a cabo esta tarea.

En primer lugar, creamos el rol con el mismo nombre que nuestro usuario con el comando createuser:

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

Ya tenemos el rol pero nos queda un paso más. Y es que cuando conectamos al servidor PostgreSQL con un rol determinado, debe existir una base de datos asociada al rol con el mismo nombre. Por tanto, vamos a crear una nueva base de datos de idéntico nombre que el rol que acabamos de crear, con el comando createdb en esta ocasión:

~$ sudo -u postgres -i createdb chacho -O chacho

En resumen, siendo nuestro usuario de Fedora 30, 31 y 32 en este ejemplo chacho, tenemos ya un rol chacho (que además es administrador) y una base de datos chacho. Por lo tanto, con sesión iniciada en Fedora 30, 31 y 32 como chacho podemos conectar a PostgreSQL automáticamente con el cliente de consola psql:

~$ psql
psql (xx.x)
Digite «help» para obtener ayuda.

chacho=#

Así de fácil, ya podemos interactuar con comandos de psql y sentencias SQL. Algunas comandos básicos de psql son:

  • \h nos muestra ayuda y acepta un argumento para mostrar ayuda específica sobre comandos y sentencias SQL.
  • \d muestra tablas y relaciones.
  • \q cierra el cliente psql y vuelve a la línea de comandos.

Si alguna vez necesitas un rol para una aplicación que trabaje sobre PostgreSQL, el procedimiento será similar, crear (ahora con nuestro usuario en lugar de postgres) un rol y su base de datos:

~$ createuser nuevo_rol
~$ createdb nuevo_rol -O nuevo_rol

Cómo configurar PostgreSQL en Fedora 30/31/32

Para configurar PostgreSQL en Fedora 30, 31 y 32 hemos de tener en cuenta que los archivos de configuración en lugar de residir en /etc se encuentran en /var/lib/pgsql/data.

Acceso con contraseña

Si quisiéramos usar acceso con contraseña para usuarios locales, el primer paso sería crear las contraseñas de usuario. Por ejemplo, iniciada sesión con psql y el usuario que hemos creado anteriormente, usaríamos el comando \password:

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

Como este rol es administrador, podríamos crear contraseñas para otros roles existentes:

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

No basta con crear las contraseñas de cada rol de PostgreSQL, ya que la configuración por defecto se basa en la identidad del usuario de Fedora 30, 31 y 32 que conecta, en lugar del uso de contraseña. Para cambiar este comportamiento debemos editar el archivo de configuración pg_hba.conf:

~$ sudo nano /var/lib/pgsql/data/pg_hba.conf

Buscaremos esta línea:

...
local   all             all                                     peer
...

Y cambiaremos peer por md5:

...
local   all             all                                     md5
...

Si deseas mantener al usuario postgres sin contraseña, añade esta línea ANTES que la que hemos modificado:

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

El orden de las directivas importa, porque se evalúan en orden inverso a como aparecen en el archivo, es decir, en primer lugar las últimas. De este modo, la segunda directiva local, que es más general, configura el uso de contraseñas para todos los roles, y la segunda directiva local modificará sólo la autenticación del rol postgres.

Una vez guardados los cambios será necesario recargar la configuración del servicio para aplicarlos:

~$ sudo systemctl reload postgresql

A partir de este momento se exige el uso de contraseña, como puedes comprobar si lanzas el cliente psql de nuevo:

~$ psql
Contraseña para usuario chacho:

Cómo acceder remotamente a PostgreSQL en Fedora 30, 31 y 32

Si quieres acceder de forma remota al servicio PostgreSQL en Fedora 30, 31 y 32 el primer paso es que el servicio atienda peticiones desde cualquier adaptador de red, ya que por defecto sólo atiende peticiones locales.

Para ello editaremos la configuración:

~$ sudo nano /var/lib/pgsql/data/postgresql.conf

Buscaremos la directiva listen_addresses:

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

Está desactivada, así que cambiaremos el valor por defecto y eliminaremos el carácter # inicial:

...
listen_addresses = '*'
...

Guardamos los cambios y cerramos el archivo.

Ahora hay que permitir que los roles puedan conectar de forma remota, para lo que editamos el archivo pg_hba.conf:

~$ sudo nano /var/lib/pgsql/data/pg_hba.conf

Añadimos una línea como esta al final del archivo:

...
host    all     all     all     md5

Esta línea, además de permitir a los roles acceder remotamente, exige autenticación mediante contraseña, por lo que debes crear contraseñas para los roles que quieras que accedan remotamente. Pero aunque esta directiva especifica mediante un valor all que se permiten las conexiones con contraseña desde cualquier dirección de red, existen otras dos directivas host que modifican el comportamiento desde direcciones locales (para direcciones IP como 127.0.0.1 o nombre de servidor localhost):

...
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident
...

Muchas aplicaciones al conectar localmente pueden tener problemas con la autenticación tipo ident. Podemos solucionar esto de varias formas:

  • Situando la directiva host para todas las direcciones por encima de estas directivas host para direcciones locales, ya que tiene prevalencia siempre la directiva que figura antes en el archivo de configuración, pero es una solución poco elegante.
  • Desactivando las dos directivas host locales, que serán englobadas por la nueva.
  • Cambiando explícitamente el tipo de autenticación ident por md5 también en las directivas host locales, que será lo que hagamos en este ejemplo.
...
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
...
host    all             all             all                     md5

Hechos estos cambios, reiniciamos el servicio:

~$ sudo systemctl restart postgresql

Cómo configurar el firewall de Fedora 30/31/32 para PostgreSQL

Como el firewall de Fedora 30, 31 y 32 suele estar activo por defecto, es necesario añadir una regla si queremos permitir conexiones desde la red al servicio:

~$ sudo firewall-cmd --permanent --add-service=postgresql

Activamos la nueva regla recargando la configuración del firewall:

~$ sudo firewall-cmd --reload

Acceso remoto a PostgreSQL

Podemos comprobar el funcionamiento del acceso remoto al servicio PostgreSQL en Fedora 30, 31 y 32 haciendo uso, por ejemplo, del cliente psql desde otro sistema. Habrá que indicar la dirección del servidor Fedora 30, 31 ó 32 con el parámetro -h y el rol con el que queremos iniciar sesión con el parámetro -U:

~$ psql -h fedora30.local.lan -U chacho

como configurar postgresql en fedora 30, 31 y 32

En este caso el cliente pertenece a una versión posterior a la del servidor, pero funciona perfectamente.

Conclusión

Ahora ya sabes cómo instalar PostgreSQL en Fedora 30, 31 y 32, crear roles y bases de datos para tus usuarios y tus desarrollos, o aplicaciones que lo necesiten. El trabajo con SQL excede el alcance de esta guía.

Si tienes dudas, preguntas, sugerencias, etc. déjame un comentario.

¡Apoya comoinstalar.me!

¿Te resultó útil esta guía para instalar PostgreSQL en Fedora 30, 31 y 32? Quizás quieras contribuir con una mínima aportación al mantenimiento de este sitio, como forma de agradecimiento, y puedes hacerlo dejando una propina de 1 $ en PayPal:

O, si te sientes especialmente generoso, puedes invitarme a un café:

¡Gracias!

Valora esta entrada

Deja un comentario

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.

ACEPTAR
Aviso de cookies