Cómo instalar PostgreSQL en Fedora 32

En esta ocasión veremos cómo instalar PostgreSQL en Fedora 32 paso a paso, de modo que puedas trabajar con este potente motor de bases de datos relacionales sobre su servidor o VPS Fedora.

Antes de instalar PostgreSQL en Fedora 32

Si quieres completar los pasos de esta guía de instalación y configuración de PostgreSQL en Fedora 32 sólo necesitas partir de la siguiente base:

  • Un sistema Fedora 32 actualizado.
  • Un usuario con permisos de sudo, o el mismo root.
  • Acceso a Internet.

Cómo configurar el repositorio de PostgreSQL para Fedora 32

Para disfrutar de las últimas versiones de PostgreSQL en Fedora 32, o de alguna versión anterior que estemos obligados a usar, instalamos el paquete que configurará el repositorio oficial en el sistema:

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

Y actualizamos las listas de paquetes para que se incluya el nuevo repositorio de PostgreSQL:

~$ sudo yum update -y

Cómo instalar PostgreSQL en Fedora 32

Para instalar PostgreSQL en Fedora 32 desde el repositorio oficial tendremos que elegir la versión que nos interesa e instalarla con yum. El repositorio incluye las versiones 9.4, 9.5, 9.6, 10, 11 y 12, siendo esta última la que vamos a instalar en este tutorial, por lo que descargaremos el paquete postgresql12-server:

~$ sudo yum install -y postgresql12-server

Tras la descarga e instalación de PostgreSQL se crea un nuevo servicio en Fedora 32, el servicio postgresql-12.service o simplemente postgresql-12, que no queda en ejecución y tampoco habilitado. Esto es así porque antes de trabajar con el servicio es necesario inicializar las bases de datos, cosa que haremos con el siguiente comando:

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

Realizado esta paso podemos iniciar PostgreSQL por primera vez:

~$ sudo systemctl start postgresql-12

Para comprobar que el servicio se encuentra en ejecución podemos comprobar fácilmente su estado con el comando systemctl status postgresql-12:

como instalar postgresql en fedora 32

El servicio debería encontrarse funcionando sin problemas.

Si queremos que PostgreSQL inicie automáticamente con cada arranque de Fedora 32, deberíamos habilitar el servicio:

~$ sudo systemctl enable postgresql-12

Cómo instalar el cliente de PostgreSQL en Fedora 32

Si únicamente nos interesa el cliente de PostgreSQL para conectar remotamente a otros servidores, el paquete que necesitamos tiene un nombre similar al del servidor, excluyendo la terminación -server. Por ejemplo, en el caso de querer instalar la versión 12 del cliente de PostgreSQL para Fedora 32 el paquete que necesitamos es postgresql12:

~$ sudo yum install -y postgresql12

Si has instalado PostgreSQL Server en Fedora 32, no será necesario instalar adicionalmente el cliente, puesto que este se encuentra entre sus dependencias y ya estaría disponible.

Cómo conectar a PostgreSQL en Fedora 32

Inicialmente PostgreSQL sólo incluye un rol (usuario) llamado postgres y sólo es posible realizar la conexión mediante el usuario postgres de Fedora 32, para lo que tendremos que utilizar sudo. Por ejemplo, para conectar con el cliente de consola psql:

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

postgres=#

Podemos cerrar la conexión con los comandos \q o exit.

Sería interesante disponer de un rol administrador de PostgreSQL para nuestro usuario de trabajo en Fedora 32, y así no tener que utilizar sudo con postgres. Esto podemos hacerlo usando el comando createuser, todavía con el usuario postgres para crear este rol con el mismo nombre que nuestro usuario de Fedora 32:

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

Para poder conectar a PostgreSQL con este nuevo rol asociado a nuestra cuenta de Fedora 32 necesitamos una base de datos con el mismo nombre que el rol, que podemos crear con el comando createdb. Aunque podemos hacerlo con el usuario postgres y sudo, ya podemos también hacerlo con nuestro nuevo rol directamente:

~$ createdb chacho -O chacho

Y por fin tenemos todo lo necesario para conectar al servicio con nuestro usuario de Fedora 32 y su rol asociado de PostgreSQL:

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

chacho=#

Habrás observado que aunque al crear el rol se creó también su contraseña de acceso, no se nos ha pedido en ningún momento. Ahora veremos por qué.

Cómo configurar PostgreSQL en Fedora 32

Para configurar PostgreSQL en Fedora 32 es importante saber que la versión procedente de los repositorios oficiales organiza sus archivos bajo la ruta /var/lib/pgsql/XX/data/, haciendo XX referencia a la versión instalada.

Veremos a continuación algunos casos prácticos de configuración de PostgreSQL en Fedora 32.

Activar el uso de contraseñas

Ya hemos visto que podemos crear usuarios con contraseña utilizando el comando createuser con el parámetro -P, pero es posible que tengamos usuarios sin contraseña a los que sea necesario asignarles una. Esto lo podemos hacer desde psql con el comando \password, para el rol propio:

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

O si estamos trabajando con un administrador, para otros roles:

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

Pero para activar el uso de contraseñas en PostgreSQL hay que editar el archivo pg_hba.conf:

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

Buscaremos el bloque de directivas local:

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

Podemos apreciar que el sistema de autenticación para todos los usuarios es peer, el sistema que asocia el usuario de Fedora 32 con un rol en PostgreSQL con el mismo nombre. Bastaría con cambiar el valor peer por md5, que es el sistema de autenticación por contraseña.

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

Sin embargo, por defecto el rol postgres no tiene contraseña y tenemos la posibilidad de crearle una, como hemos visto anteriormente, o crear una excepción en la configuración manteniendo el sistema de autenticación peer, añadiendo una directiva local antes que la que se encarga de todos los usuarios:

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

El orden de aparición de las directivas es importante, ya que se evalúan en orden inverso al de aparición en el archivo. De este modo, en primer lugar se activa el método md5 para todos los usuarios y a continuación se modifica para postgres como peer.

Elijas la opción que elijas, los cambios no tendrán efecto hasta recargar la configuración del servicio PostgreSQL:

~$ sudo systemctl reload postgresql-12

Si tratamos de conectar con nuestro usuario veremos que se nos solicita la contraseña:

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

chacho=#

Si creaste la excepción para el rol postgres no se pedirá contraseña:

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

postgres=#

Y si no creaste la excepción, sí se pedirá:

~$ sudo -iu postgres psql
Contraseña para usuario postgres:
psql (12.3)
Digite «help» para obtener ayuda.

postgres=#

Finalmente, muchas aplicaciones locales que trabajan con PostgreSQL en base a autenticación por contraseña pueden tener problemas con la siguiente configuración en pg_hba.conf:

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

Podemos ver que las conexiones locales sobre TCP/IP no están utilizando autenticación por contraseña, sino del tipo ident, así que es importante hacer el cambio:

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

Guardamos los cambios y recargamos la configuración del servicio.

Cómo acceder remotamente a PostgreSQL en Fedora 32

Por defecto PostgreSQL en Fedora 32 sólo atiende conexiones locales, por lo que hay que modificar el archivo postgresql.conf para cambiar este comportamiento:

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

Para permitir el acceso remoto a PostgreSQL en Fedora 32 buscaremos la directiva listen_addresses:

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

Activaremos esta directiva eliminando el carácter # al inicio de la línea y cambiaremos el valor localhost por *:

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

Guardaremos esta configuración y editaremos pg_hba.conf:

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

Buscamos el bloque de directivas host:

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

Podemos añadir una nueva directiva host a continuación de las anteriores que establezca el tipo de autenticación para el acceso remoto:

...
# Acceso remoto
host    all             all             all                     md5
...

Guardados los cambios, habrá que reiniciar PostgreSQL para aplicar todos estos cambios:

~$ sudo systemctl restart postgresql-12

Configurar el firewall de Fedora 32 para PostgreSQL

Si está activado el firewall de Fedora 32, que es lo habitual, habrá que añadir una regla para permitir la conexiones remotas a PostgreSQL:

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

Los cambios se aplican al recargar la configuración del firewall:

~$ sudo firewall-cmd --reload

Conexiones remotas

Ya podemos establecer conexiones remotas a PostgreSQL desde otros sistemas con clientes como psql o similares, indicando la dirección del servidor Fedora 32 y el rol con el que queremos conectar.

Por ejemplo, desde otro sistema Linux con el cliente psql especificamos con el parámetro –host la dirección IP o nombre DNS del servidor Fedora 32 donde acabamos de instalar y configurar PostgreSQL, y con el parámetro -U el rol con el que queremos conectar:

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

instalar y configurar postgresql en fedora 32

Conclusión

Ahora que sabes cómo instalar y configurar PostgreSQL en Fedora 32 Linux ya puedes trabajar con este motor de bases de datos relacionales tanto para desarrollo propio como para el soporte de aplicaciones que requieren este entorno.

Si tienes dudas o preguntas, quieres sugerir alguna mejora para el artículo, crees que necesita ser actualizado, o puedes notificar algún error, deja un comentario que revisaremos lo antes posible.

¡Apoya comoinstalar.me!

¿Ya tienes tu sistema de bases de datos listo gracias a nuestra guía de instalación y configuración de PostgreSQL en Fedora 32 Linux? Si es así y te apetece agradecérnoslo, puedes ayudar a mantener este sitio y a la creación de más artículos de las siguientes formas…

Invitándonos a un café:

 

O dejando una propina en PayPal:

¡Gracias!

Valora esta entrada

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (3 votos, promedio: 5,00 de 5)
Cargando…

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