Cómo instalar PostgreSQL en Fedora 34/33

En este artículo vamos a ver cómo instalar y configurar PostgreSQL en Fedora 34 y 33 paso a paso, de modo que puedas trabajar con este potente servicio de bases de datos en tu sistema, servidor o VPS Fedora.

Antes de instalar PostgreSQL en Fedora 34/33

Si quieres seguir los pasos de esta guía de instalación de PostgreSQL en Fedora 34 y 33 sólo necesitas cumplir estos mínimos requerimientos:

  • Una máquina Fedora 34 ó 33 actualizada.
  • Un usuario con permisos de sudo.
  • Acceso a Internet.

A la hora de instalar PostgreSQL en Fedora 34 y 33, las distribuciones que actualmente cuentan con soporte, podemos optar entre la versión que ofrece la distribución (12.7 para Fedora 33 ó 13.4 para Fedora 34), o la versión oficial de PostgreSQL (que ofrece distintas versiones del servicio). Esta última opción sólo está disponible durante el ciclo de vida de la distribución, ya que PostgreSQL retira el soporte cuando una distribución alcanza el final de dicho ciclo.

Cómo instalar el repositorio de PostgreSQL en Fedora 34/33

Si prefieres la versión oficial a la de la distribución, será necesario instalar el repositorio de PostgreSQL para Fedora 34 ó 33, lo que haremos mediante el comando yum.

Para Fedora 34:

~$ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/F-34-x86_64/pgdg-fedora-repo-latest.noarch.rpm

Y para Fedora 33:

~$ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/F-33-x86_64/pgdg-fedora-repo-latest.noarch.rpm

A continuación actualizamos la información de los repositorios, que ahora incluirán también el de PostgreSQL:

~$ sudo yum update -y

Ahora disponemos de las versiones 13, 12, 11, 10 y 9.6 de PostgreSQL para elegir.

Cómo instalar PostgreSQL en Fedora 34/33

Es el momento de instalar PostgreSQL en Fedora 34 y 33, dependiendo de la opción que hayamos elegido. Si hemos optado por la versión de la distribución, el paquete que necesitamos es postgresql-server:

~$ sudo yum install -y postgresql-server

Sin embargo, si hemos preferido el repositorio oficial tendremos a elegir entre los paquetes postgresql96-server, postgresql10-server, postgresql11-server, postgresql12-server y postgresql13-server. Por ejemplo, para instalar la última versión disponible:

~$ sudo yum install -y postgresql13-server

NOTA: Para este tutorial asumiremos la versión 13 del repositorio oficial, por lo que en aquellos comandos, rutas, etc. donde no aparezca número de versión se hará referencia a la versión de PostgreSQL de la distribución, y donde aparezca dicho número se referirá a la versión del repositorio oficial (que puede ser distinta a la que hayas elegido tú).

Tras la descarga e instalación de PostgreSQL y sus dependencias, disponemos de un nuevo servicio en el sistema, postgresql.service o postgresql-13.service, aunque también puedes usar el nombre corto, postgresql o postgresql-13. Este servicio no está iniciado ni habilitado para hacerlo automáticamente, porque primero debemos inicializar las bases de datos del servicio, para lo que disponemos de un comando específico.

En el caso de la versión incluida en la distribución:

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

Y para la versión del repositorio oficial:

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

Ahora sí, podemos iniciar el servicio por vez primera con el comando systemctl.

En el caso de la versión de la distribución:

~$ sudo systemctl start postgresql

Y para la versión oficial:

~$ sudo systemctl start postgresql-13

Podemos comprobar que el servicio se encuentra en ejecución con la opción status del comando systemctl, por ejemplo, para la versión de la distribución:

~$ systemctl status postgresql

como instalar postgresql en fedora 34 y 33

Y para la versión oficial:

~$ systemctl status postgresql-13

instalar postgresql en fedora 34 y 33

PostgreSQL se encuentra en ejecución, pero no habilitado para arrancar automáticamente en cada inicio de Fedora 34 y 33, por lo que debemos habilitarlo si es nuestra intención que suceda tal cosa:

~$ sudo systemctl enable postgresql

O:

~$ sudo systemctl enable postgresql-13

Instalación del cliente de PostgreSQL en Fedora 34/33

En caso de instalar el servicio, no es necesario instalar el cliente de PostgreSQL en Fedora 34 y 33, ya que forma parte de las dependencias. Pero si sólo necesitas el cliente, para conectar remotamente a otros sistemas, por ejemplo, necesitarás el paquete postgresql o el paquete postgresql13 (para la versión de la distribución o la oficial):

~$ sudo yum install -y postgresql13

Conexión a PostgreSQL en Fedora 34/33 desde línea de comandos

La instalación por defecto de PostgreSQL crea un rol postgres que sólo puede ser utilizado por el usuario postgres de Fedora 34 y 33, también creado durante la instalación. Por tanto usaremos sudo para conectar al servicio desde consola con el cliente psql o usar otros comandos de PostgreSQL:

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

postgres=#

Observa que el prompt del cliente finaliza en #, por lo tanto estamos trabajando como administradores del servicio.

Podemos finalizar la sesión con el comando \q o con exit.

Es más interesante disponer de un rol administrativo que podamos manejar con nuestro usuario del sistema, así que crearemos dicho rol con el comando createuser y el usuario postgres:

~$ 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

Crearemos la contraseña para nuestro rol e indicaremos que sea un superusuario.

Desde este momento ya podemos usar nuestro usuario de Fedora 34 y 33 para trabajar con PostgreSQL desde línea de comandos, pero es importante crear una base de datos con el mismo nombre que nuestro rol:

~$ createdb chacho -O chacho

Ahora sí podemos conectar al servicio usando psql con nuestro usuario de trabajo:

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

chacho=#

Observa que, a pesar de haberla creado, no se nos ha pedido contraseña. Esto es porque por defecto estamos utilizando identificación ligada al usuario del sistema, es decir, si conecto como usuario chacho de Fedora, PostgreSQL utilizará el rol chacho, sin más comprobaciones.

Esto puede ser cómodo en muchas ocasiones, pero no servir para conexiones remotas, aplicaciones web, o, simplemente, muchas veces no tiene sentido crear un usuario del sistema para trabajar con cierto rol. Así que veremos enseguida cómo activar el uso de contraseñas.

Cómo configurar PostgreSQL en Fedora 34/33

Al momento de configurar PostgreSQL en Fedora 34 y 33 hemos de saber que sus archivos de configuración se encuentran en el directorio /var/lib/pgsql/data/ en el caso de la versión de la distribución, pero para la versión oficial se añade un subdirectorio intermedio con el número de versión, por ejemplo, /var/lib/pgsql/13/data/.

Uso de contraseñas

Antes hemos visto que no se solicitaba contraseña al usar un nuevo rol. Para cambiar este comportamiento editamos el archivo pg_hba.conf:

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

O:

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

Buscamos la siguiente sección:

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

Esta directiva local indica que cualquier conexión local se autenticará mediante el sistema peer, basado en la identidad del usuario que realiza la conexión (como hemos visto anteriormente). Para usar autenticación por contraseña cambiamos peer por md5 si se trata de la versión de la distribución (o versiones anteriores de PostgreSQL):

...
local   all             all                                     md5
...

Pero para la versión 13 del repositorio oficial usaremos scram-sha-256:

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

Ahora no sólo se pedirá la contraseña, sino que cualquier usuario del sistema podrá conectar con cualquier rol para el que conozca dicha contraseña.

Sin embargo, es importante que el usuario postgres siga trabajando de la forma anterior, ya que algunas tareas de mantenimiento se realizan con dicho usuario. Para ello insertamos su propia directiva local justo antes de la anterior:

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

Podrías hacer algo similar con tu propio usuario administrador, si te parece buena idea.

En cuanto a conexiones locales TCP/IP, PostgresQL 13 procedente del repositorio oficial ya contempla el uso de contraseñas scram-sha-256, pero la versión oficial o versiones anteriores podrían usar peer o ident:

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

En estos casos es recomendable cambiar a autenticación tipo md5:

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

Terminados los ajustes en este archivo, guardamos los cambios y recargamos la configuración del servicio:

~$ sudo systemctl reload postgresql

O:

~$ sudo systemctl reload postgresql-13

Si hemos mantenido el uso de contraseña para el rol de nuestro usuario podemos lanzar el cliente psql:

~$ psql
Contraseña para usuario chacho:
psql (13.4)
Digite «help» para obtener ayuda.

chacho=#

Y veremos que ahora sí se solicita la contraseña.

Acceso remoto a PostgreSQL

Si necesitamos acceder remotamente a PostgreSQL en Fedora 34 y 33 desde otros sistemas en red tendremos que realizar algunos ajustes, ya que por defecto el servicio sólo atiende conexiones locales. Para ello editaremos el archivo postgresql.conf:

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

O:

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

Buscaremos la directiva listen_addresses:

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

La activaremos eliminando el carácter # al inicio de línea y cambiaremos su valor por ‘*’:

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

A continuación guardamos los cambios y editamos de nuevo el archivo pg_hba.conf. En esta ocasión añadiremos una directiva host que defina cómo tratar las conexiones remotas, mediante autenticación scram-sha-256 (o md5, si es el caso):

...
# 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 este archivo y reiniciamos el servicio:

~$ sudo systemctl restart postgresql

O:

~$ sudo systemctl restart postgresql-13

Configuración del firewall

En el caso de tener activado el firewall de Fedora 34 y 33, será necesario añadir la regla correspondiente para permitir las conexiones entrantes al servicio PostgreSQL:

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

Para aplicar los cambios hay que recargar la configuración del firewall:

~$ sudo firewall-cmd --reload

Probando el acceso remoto

A partir de este momento puedes realizar conexiones en red desde otros sistemas, por ejemplo, con alguno que disponga de un cliente como psql indicando en esta ocasión el rol que se desea utilizar y la dirección del servidor Fedora 34 ó 33 sobre el que corre el servicio PostgreSQL:

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

como instalar y configurar postgresql en fedora 34 y 33

Justo lo que pretendíamos.

Conclusión

Ahora que sabes cómo instalar y configurar PostgreSQL en Fedora 34 y 33 ya puedes trabajar con este potente motor de bases de datos tanto para tus propios desarrollos como para satisfacer los requisitos de aplicaciones de terceros.

Si tienes cualquier sugerencia, duda o pregunta puedes dejar un comentario que, aunque están moderados para evitar SPAM, se revisan prácticamente a diario.

¡Apoya comoinstalar.me!

¿Ya funciona este servicio de bases de datos en tu propio sistema gracias a nuestra pequeña guía? Si es así y quieres agradecérnoslo, puedes ayudarnos a mantener este sitio en línea dejando una propina a partir de 1 $ desde PayPal:

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

¡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