Cómo instalar PostgreSQL en Rocky Linux 8

En este artículo explicamos cómo instalar PostgreSQL en Rocky Linux 8 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 8

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

  • Un sistema Rocky Linux 8 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 8

A la hora de instalar PostgreSQL en Rocky Linux 8 tenemos dos opciones, instalar la versión incluida en los repositorios del sistema o bien instalar una versión más reciente desde el repositorio oficial de este motor de base de datos.

Si prefieres la versión presente en Rocky Linux 8, para mantener la compatibilidad con otros paquetes del sistema, por ejemplo, puedes saltarte el siguiente paso.

Cómo configurar el respositorio oficial de PostgreSQL en Rocky Linux 8

Instalamos el siguiente paquete procedente del sitio oficial que dejará configurado el nuevo repositorio:

~$ sudo yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Actualizamos la información de los repositorios para que se incluya también la del nuevo:

~$ sudo yum -y update

Y desactivamos el módulo de PostgreSQL incluido en los repositorios de Rocky Linux 8:

~$ sudo yum -y module disable postgresql

Ya tenemos todo listo para inciar la instalación.

Instalación

Actualizamos la información de los repositorios:

~$ sudo yum update

En el caso de usar los repositorios de Rocky Linux 8 el paquete que necesitamos es postgresql-server, que instalará la versión 10.17:

~$ sudo yum -y install postgresql-server

Pero si usamos el repositorio oficial de PostgreSQL, el mismo paquete instalará una versión 10 más reciente. Como lo más probable es que te interese una versión mucho más reciente, bastará con añadir dicho número de versión al nombre del paquete. Por ejemplo, para la versión 14:

~$ sudo yum -y install postgresql14-server

Disponemos también de las versiones 11, 12 y 13.

Sea cual sea la elección, una vez instalado y descargado el paquete elegido y sus dependencias se crea un nuevo servicio en Rocky Linux 8, el servicio postgresql o postgresql.service, para la versión de Rocky Linux 8, o postgresql-14 o postgresql-14.service para la versión del repositorio oficial.

En cualquier caso, 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.

En las versiones oficiales de PostgreSQL se hace así:

~$ sudo /usr/pgsql-14/bin/postgresql-14-setup initdb

Y para la versión de los repositorios de Rocky Linux:

~$ sudo postgresql-setup --initdb

Ahora ya podemos iniciar el servicio con systemctl:

~$ sudo systemctl start postgresql

O:

~$ sudo systemctl start postgresql-14

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

~$ sudo systemctl enable postgresql

O:

~$ sudo systemctl enable postgresql-14

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

~$ systemctl status postgresql

O:

~$ systemctl status postgresql-14

como instalar postgresql en rocky linux 8

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

Durante la instalación del servicio se ha creado un usuario de Rocky Linux 8 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 Linux 8 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 -iu postgres psql
psql (14.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 en las versiones más recientes.

Si vamos a trabajar con el servicio y con nuestro usuario habitual de Rocky Linux 8 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 -iu postgres createuser --interactive -P chacho
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 chacho -O chacho

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 (14.1)
Digite «help» para obtener ayuda.

chacho=#

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, front-ends, etc.).

Cómo configurar PostgreSQL en Rocky Linux 8

Para configurar PostgreSQL en Rocky Linux 8 hay que trabajar sobre sus archivos de configuración ubicados en la ruta /var/lib/pgsql/data/ o /var/lib/pgsql/14/data/ (dependiendo de la versión que uses.

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

Uso de contraseñas de PostgreSQL en Rocky Linux 8

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 14) para las conexiones locales basadas en TCP/IP sí se usa contraseña, lo cual está muy bien cuando se usan aplicaciones o front-ends que conectan al servicio de bases de datos. Pero no ocurre así en versiones anteriores (como la versión del repositorio de Rocky Linux 8).

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

O:

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

Si se trata de una de las versiones antiguas 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
...

En estas directivas host cambiaremos ident por md5, que es el sistema de autenticación por contraseña que solía usarse:

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

Para versiones recientes, como la 14 por ejemplo, observaremos que ya se utiliza el sistema scram-sha-256 que es el sistema de contraseñas que corresponde a versiones más modernas:

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

O para las versiones más modernas (aunque en teoría no deberías haber hecho modificación alguna):

~$ sudo systemctl reload postgresql-14

Acceso remoto

Por defecto PostgreSQL sólo admite conexiones locales en Rocky Linux 8, 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

O:

~$ sudo nano /var/lib/pgsql/14/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.

En el caso de la versión del sistema insertamos la siguiente directiva host justo a continuación de las mostradas:

...
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Acceso remoto
host    all             all             all                     md5
...

Y para versiones que usan scram-sha-256 haríamos lo correspondiente:

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

O:

~$ sudo systemctl restart postgresql-14

Configuración del firewall

Aunque PostgreSQL ya admitiría conexiones en red, el firewall de Rocky Linux 8 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 Linux 8 y el rol con el que queremos conectar.

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

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

instalacion y configuracion de postgresql en rocky linux 8

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 8, ya sea la versión de los repositorios del sistema o del repositorio oficial, 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 correciones, etc. puedes dejar un comentario. Están moderados, por lo del SPAM y tal, pero se revisan prácticamente a diario.

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