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.
Contenido
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
:
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
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!
Hola, genial tu documento. Te hago una consulta, ¿cómo hago en Fedora para tener dos clusters de PostreSQL, por ejemplo uno en verison 9.5 y otro en 12?
Saludos.
Hola, tengo una duda, quiero instalar la librería postgresql-client y me sale este error: No match for argument: postgresql-client
Error: Unable to find a match: postgresql-client, y sí pude instalar las otras librerías como devel, contrib o server. ¡¡Ayuda!!
Hola, Dennis. No sé si te refieres al paquete postgresqlXX-libs, donde XX es la versión de PostgreSQL instalada en Fedora 32, pero ese suele ser dependencia del servidor.