Cómo instalar PostgreSQL en Rocky Linux 9

En este artículo explicamos cómo instalar PostgreSQL en Rocky Linux 9 Blue Onyx paso a paso, de tal modo que puedas disfrutar de este magnífico motor de bases relacionales sobre tu servidor o VPS Rocky Linux.

Antes de instalar PostgreSQL en Rocky Linux 9

Para poder seguir los pasos de esta guía de instalación de PostgreSQL en Rocky Linux 9 simplemente necesitas satisfacer los siguientes requisitos:

  • Un sistema Rocky Linux 9 Blue Onyx actualizado.
  • Acceso a línea de comandos con un usuario con privilegios de sudo.
  • Conexión a Internet.

Como con toda probabilidad ya cumplirás estos requerimientos, es hora de ajustar la altura de nuestro escritorio y abrir una terminal de consola para empezar a trabajar.

Cómo instalar PostgreSQL en Rocky Linux 9

A la hora de instalar PostgreSQL en Rocky Linux 9 tenemos que saber que los repositorios de la distribución incluyen varios módulos para este motor de bases de datos. Antes de consultar los que están disponibles actualizamos la información de los repositorios:

~$ sudo yum update

Y realizamos la consulta:

~$ sudo yum module list postgresql
...
Name         Stream   Profiles             Summary
postgresql   15       client, server [d]   PostgreSQL server and client module
postgresql   16       client, server [d]   PostgreSQL server and client module

Leyenda: [d] predeterminado, [e] activo, [x] inactivo, [i] instalado

Si queremos instalar la versión 15 podemos hacerlo así:

~$ sudo yum module -y install postgresql:15

Y si preferimos la versión 16, así:

~$ sudo yum module -y install postgresql:16

Una vez instalados y descargados los paquetes del módulo se crea un nuevo servicio en Rocky Linux 9, el servicio postgresql o postgresql.service. Este nuevo servicio no queda en ejecución ni habilitado para su inicio automático, ya que primero es necesario inicializar las bases de datos:

~$ sudo postgresql-setup --initdb

Ahora ya podemos iniciar el servicio con systemctl:

~$ sudo systemctl start postgresql

Y si queremos que el servicio esté siempre disponible, habrá que habilitarlo para que inicie automáticamente en cada arranque de Rocky 9:

~$ sudo systemctl enable postgresql

Es fácil comprobar en cualquier momento el estado del servicio, también con systemctl:

~$ systemctl status postgresql

como instalar postgresql en rocky 9

Cómo usar el cliente de PostgreSQL en Rocky Linux 9

Durante la instalación del servicio se ha creado un usuario de Rocky 9 llamado postgres y un rol administrador de PostgreSQL llamado igualmente postgres. Dicho rol no tiene contraseña debido a que usa autenticación por socket, de ahí la creación del usuario de Rocky 9 con el mismo nombre, que es el único usuario al que se le permite usar el rol.

Podemos realizar una conexión a través del cliente de consola psql utilizando el usuario postgres con sudo:

~$ sudo -u postgres psql
psql (16.1)
Digite «help» para obtener ayuda.

postgres=#

La conexión se establece inmediatamente sin problemas y el prompt cambia para permitirnos usar comandos de PostgreSQL. Podemos cerrarla usando el comando \q o exit.

Si vamos a trabajar con el servicio y con nuestro usuario habitual de Rocky 9 sería estupendo disponer de un rol de PostgreSQL que nos permitiese conectar sin usar sudo.

Podemos hacerlo creando dicho rol con idéntico nombre que nuestro usuario y el comando createuser:

~$ sudo -u postgres createuser --interactive -P instalador
Ingrese la contraseña para el nuevo rol:
Ingrésela nuevamente:
¿Será el nuevo rol un superusuario? (s/n) s

En los parámetros del comando hemos solicitado que se nos pregunte si el nuevo rol debe ser superusuario y se nos haga crear una contraseña para el mismo.

El nuevo rol queda listo para usar, pero aún no podemos conectar con el cliente psql sin parámetros, ya que de hacerlo se intentará conectar a una base de datos con el mismo nombre que el rol que no existe. Pero sí podemos estrenar nuestro nuevo rol con el comando createdb para crear la base de datos:

~$ createdb instalador -O instalador

Ahora tenemos un usuario del sistema, un rol de PostgreSQL y una base de datos todos con el mismo nombre, así que ya es posible conectar al servicio sin sudo y sin parámetros:

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

instalador=#

Puede que hayas reparado en que a pesar de haber creado una contraseña, no se ha solicitado para establecer la conexión. Esto es así porque la configuración por defecto del servicio aplica también autenticación por socket a los usuarios locales, pero sí se solicitará contraseña para conexiones TCP/IP locales (como las que usan aplicaciones, frontends, etc.).

Cómo configurar PostgreSQL en Rocky Linux 9

Para configurar PostgreSQL en Rocky 9 hay que trabajar sobre sus archivos de configuración ubicados en la ruta /var/lib/pgsql/data/.

A continuación veremos algunos ejemplos típicos de configuración.

Uso de contraseñas de PostgreSQL en Rocky Linux 9

Inicialmente PostgreSQL utiliza una autenticación basada en socket para los usuarios locales que conectan desde consola.

En el caso de las versiones más recientes (como la 15) para las conexiones locales basadas en TCP/IP sí se usa contraseña, lo cual está muy bien cuando se usan aplicaciones o frontends que conectan al servicio de bases de datos. Pero no ocurre así en versiones anteriores.

Esto se configura en el archivo pg_hba.conf, que podemos abrir con algún editor de texto como nano:

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

Buscamos esta directiva local:

...
local   all             all                                     peer
...

Y cambiamos el método de autenticación peer por scram-sha-256. Además, para que el usuario principal postgres siga funcionando como hasta ahora añadimos previamente otra directiva local para él con autenticación peer:

...
local   all             postgres                                peer
local   all             all                                     scram-sha-256
...

Después buscaremos esta sección:

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

Y haremos lo mismo:

...
# 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
...

Hechos los cambios, se guarda y cierra el archivo y se recarga la configuración del servicio:

~$ sudo systemctl reload postgresql

Acceso remoto

Por defecto PostgreSQL sólo admite conexiones locales en Rocky 9, pero si necesitas que el servicio pueda establecer conexiones en red es necesario realizar algún ajuste en el archivo postgresql.conf:

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

Buscaremos esta directiva:

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

Cambiaremos su valor actual por * y la activaremos eliminando el carácter # al inicio de línea:

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

Hecho este cambio guardamos el archivo y editamos pg_hba.conf, donde insertamos la siguiente directiva host justo a continuación de las mostradas:

...
# 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
# Acceso remoto
host    all             all             all                     scram-sha-256
...

Guardamos los cambios y en esta ocasión será necesario reiniciar el servicio:

~$ sudo systemctl restart postgresql

Configuración del firewall

Aunque PostgreSQL ya admitiría conexiones en red, el firewall de Rocky 9 las bloquearía, por lo que es necesario añadir la excepción correspondiente:

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

Hay que recargar la configuración del firewall para aplicar los cambios:

~$ sudo firewall-cmd --reload

Probando el acceso remoto

Realizados todos los ajustes anteriores es fácil comprobar su funcionalidad conectando desde una máquina en red que cuente con algún cliente, como psql, indicando la dirección del servidor Rocky 9 y el rol con el que queremos conectar.

Por ejemplo, la máquina Rocky 9 sobre la que hemos preparado este tutorial es accesible en el subdominio rocky9.local.lan y hemos creado el rol con contraseña instalador, así que desde una máquina en red que cuenta con el cliente psql conectamos de la siguiente forma:

~$ psql --host rocky9.local.lan -U instalador

instalacion y configuracion de postgresql en rocky 9

Se establecerá conexión y podremos trabajar igual que si se tratase de un servicio local, incluso si las versiones del cliente y del servidor son distintas.

Conclusión

Ahora que sabes cómo instalar y configurar PostgreSQL en Rocky Linux 9 Blue Onyx, tienes todo lo necesario para desarrollar tus propias bases de datos o para preparar los requisitos de plataformas y aplicaciones de terceros.

¡Apoya comoinstalar.me!

¿Ya puedes trabajar con bases de datos relacionales sobre tu propia máquina gracias a nuestra guía? Si es así y quieres agradecérnoslo, cualquier pequeña contribución al mantenimiento de este sitio y la creación de más guías y tutoriales es bienvenida.

Puedes ayudarnos dejando una propina de tan sólo 1 $ desde PayPal:

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

¡Gracias!

¿Dudas, preguntas, sugerencias?

Si te ha surgido cualquier duda o pregunta, tienes sugerencias o correcciones, etc. puedes dejar un comentario. Están moderados, por lo del SPAM y tal, pero se revisan prácticamente a diario.

Valora esta entrada

5/5 - (1 voto)

Deja un comentario