En este artículo vamos a ver cómo instalar y configurar PostgreSQL en Fedora 40, 39 y 38 paso a paso, de modo que puedas trabajar con este potente servicio de bases de datos en tu sistema, servidor o VPS Fedora.
Contenido
Antes de instalar PostgreSQL en Fedora 40/39/38
Si quieres seguir los pasos de esta guía de instalación de PostgreSQL en Fedora 40, 39 y 38 sólo necesitas cumplir estos mínimos requerimientos:
- Una máquina Fedora 40, 39 ó 38 actualizada.
- Un usuario con permisos de sudo.
- Acceso a Internet.
A la hora de instalar PostgreSQL en Fedora 40, 39 y 38, hay que tener en cuenta que Fedora 40 ofrece la versión 16, mientras que Fedora 39 y 38 trabajan con la versión 15.
Es posible instalar las versiones más recientes desde el repositorio oficial de PostgreSQL, aunque esta 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 40/39/38
Si prefieres la versión oficial a la de la distribución, será necesario instalar el repositorio de PostgreSQL para Fedora 40, 39 ó 38, lo que haremos mediante el comando yum.
Para Fedora 40:
~$ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/F-40-x86_64/pgdg-fedora-repo-latest.noarch.rpm
Para Fedora 39:
~$ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/F-39-x86_64/pgdg-fedora-repo-latest.noarch.rpm
Y para Fedora 38:
~$ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/F-38-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 desde la 12 a la 16 de PostgreSQL para elegir.
Cómo instalar PostgreSQL en Fedora 40/39/38
Es el momento de instalar PostgreSQL en Fedora 40, 39 y 38, 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 postgresql12-server, postgresql13-server, postgresql14-server, postgresql15-server y postgresql16-server. Por ejemplo, para instalar la última versión disponible:
~$ sudo yum install -y postgresql16-server
NOTA: Para este tutorial asumiremos la versión del repositorio de la distribución, 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-16.service, aunque también puedes usar el nombre corto, postgresql o postgresql-16. 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-16/bin/postgresql-16-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-16
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
Y para la versión oficial:
~$ systemctl status postgresql-16
PostgreSQL se encuentra en ejecución, pero no habilitado para arrancar automáticamente en cada inicio de Fedora 40, 39 y 38, por lo que debemos habilitarlo si es nuestra intención que suceda tal cosa:
~$ sudo systemctl enable postgresql
O:
~$ sudo systemctl enable postgresql-16
Instalación del cliente de PostgreSQL en Fedora 40/39/38
En caso de instalar el servicio, no es necesario instalar el cliente de PostgreSQL en Fedora 40, 39 y 38, 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 postgresql16 (para la versión de la distribución o la oficial):
~$ sudo yum install -y postgresql16
Conexión a PostgreSQL en Fedora 40/39/38 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 40, 39 y 38, 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 (16.1) 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 instalador 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 40, 39 y 38 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 instalador -O instalador
Ahora sí podemos conectar al servicio usando psql con nuestro usuario de trabajo:
~$ psql psql (16.1) Digite «help» para obtener ayuda. instalador=#
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 instalador de Fedora, PostgreSQL utilizará el rol instalador, 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 40/39/38
Al momento de configurar PostgreSQL en Fedora 40, 39 y 38 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/16/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/16/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 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 puede venir configurado con autenticación 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 scram-sha-256:
... # 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 ...
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-16
Si hemos mantenido el uso de contraseña para el rol de nuestro usuario podemos lanzar el cliente psql:
~$ psql Contraseña para usuario instalador: psql (16.1) Digite «help» para obtener ayuda. instalador=#
Y veremos que ahora sí se solicita la contraseña.
Acceso remoto a PostgreSQL
Si necesitamos acceder remotamente a PostgreSQL en Fedora 40, 39 y 38 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/16/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:
... # 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-16
Configuración del firewall
En el caso de tener activado el firewall de Fedora 40, 39 y 38, 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 40, 39 ó 38 sobre el que corre el servicio PostgreSQL:
~$ psql --host fedora.local.lan -U instalador
Justo lo que pretendíamos.
Conclusión
Ahora que sabes cómo instalar y configurar PostgreSQL en Fedora 40, 39 y 38 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!
Actualizado a la versión 16.1 sobre Fedora 40.
Actualizado a la versión 14.3 sobre Fedora 36.