PostgreSQL 14 es un sistema de gestión de bases de datos relacionales de código abierto reconocido por su solidez, escalabilidad y amplio conjunto de funciones. Una de las características clave introducidas en PostgreSQL 14 fue la capacidad de manejar la clasificación incremental, lo que mejoró significativamente el rendimiento de las consultas para cargas de trabajo específicas. Esta versión también mejoró el procesamiento paralelo, la aspiración y el procesamiento JSON, lo que la convierte en una excelente opción para entornos empresariales y de desarrollo. Aunque están algunas versiones por detrás de la última versión, PostgreSQL 14 sigue siendo una opción confiable y ampliamente compatible.
Para instalar PostgreSQL 14 en Fedora 40 o 39 usando la terminal de línea de comandos, puede importar e instalar directamente desde las compilaciones RPM de PostgreSQL. Este método garantiza que tenga la última versión y simplifica las futuras actualizaciones.
Actualice Fedora antes de la instalación de PostgreSQL 14
Para comenzar, actualice su sistema Fedora para asegurarse de que todos los paquetes estén actualizados. Este paso ayuda a prevenir posibles conflictos durante la instalación de PostgreSQL. Ejecute el siguiente comando:
sudo dnf update --refresh
Importar repositorio de claves GPG RPM de PostgreSQL
Comience importando el repositorio de PostgreSQL. Esta acción garantiza el acceso a las versiones más recientes de PostgreSQL. Selecciona e importa el repositorio correspondiente a tu versión de Fedora Linux.
Importar PostgreSQL 14
Nota: Recuerde importar la versión correcta para su versión de distribución de Fedora:
Para Fedora 40, use este comando:
sudo dnf install http://apt.postgresql.org/pub/repos/yum/reporpms/F-40-x86_64/pgdg-fedora-repo-latest.noarch.rpm
Para Fedora 39, el comando es ligeramente diferente:
sudo dnf install http://apt.postgresql.org/pub/repos/yum/reporpms/F-39-x86_64/pgdg-fedora-repo-latest.noarch.rpm
Deshabilitar el módulo PostgreSQL predeterminado (si corresponde)
Los repositorios predeterminados de Fedora suelen incluir PostgreSQL como módulo. Para priorizar la instalación desde el repositorio de PostgreSQL, es recomendable desactivar este módulo predeterminado. Utilice el siguiente comando para hacerlo:
sudo dnf -qy module disable postgresql
Finalizar la instalación de PostgreSQL 14
Continúe con la instalación de PostgreSQL 14
.Utilice este comando para instalar el servidor PostgreSQL 14 y su documentación:
sudo dnf install postgresql14-server postgresql14-docs -y
Además, puede instalar el paquete de desarrollo de la siguiente manera.
sudo dnf install postgresql14-devel
Por último, puede instalar algunos módulos, binarios y bibliotecas adicionales de uso común.
sudo dnf install postgresql14-libs postgresql14-odbc postgresql14-plperl postgresql14-plpython3 postgresql14-pltcl postgresql14-tcl postgresql14-contrib postgresql14-llvmjit
Inicializar la base de datos PostgreSQL 14
Una vez instalada, debes ejecutar el siguiente comando para inicializar la base de datos; De no hacerlo, PostgreSQL no funcionará.
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
Habilitar el servicio Systemd PostgreSQL 14
De forma predeterminada, PostgreSQL no está activado. Utilice el siguiente comando para iniciar el servicio inmediatamente y al iniciar el sistema.
sudo systemctl enable postgresql-14 --now
Verificar la instalación de PostgreSQL 14
A continuación, verifique el estado para asegurarse de que el software esté instalado y activado sin errores usando el siguiente comando.
systemctl status postgresql-14
Comandos de servicio Systemd para PostgreSQL 14
Gestión del servicio PostgreSQL 14
El servidor de base de datos PostgreSQL opera como un servicio systemd llamado "postgresql-14" en Fedora. Los administradores del sistema pueden administrar este servicio utilizando un conjunto de comandos systemd vitales para el mantenimiento de rutina y la resolución de problemas.
Detener el servidor PostgreSQL 14
Para detener el servicio PostgreSQL, quizás por mantenimiento o cambios de configuración, use este comando:
sudo systemctl stop postgresql-14
Iniciando el servidor PostgreSQL 14
Para iniciar el servicio PostgreSQL, especialmente después de una parada o instalación inicial, utilice el siguiente comando:
sudo systemctl start postgresql-14
Reiniciar el servidor PostgreSQL 14
El comando de reinicio es útil si necesita aplicar nuevas configuraciones o restablecer el servicio PostgreSQL. Detiene y luego inicia el servicio en una sola acción:
sudo systemctl restart postgresql-14
Recarga del servidor PostgreSQL 14
El comando de recarga es ideal para aplicar cambios de configuración sin detener la base de datos. Actualiza el servicio sin interrumpir la operación de la base de datos:
sudo systemctl reload postgresql-14
Comprobación del estado del servicio PostgreSQL 14
Para verificar el estado operativo del servicio PostgreSQL, utilice este comando. Proporciona información sobre el estado del servicio, incluido si está activo, inactivo o tiene problemas:
systemctl status postgresql-14
Configurar PostgreSQL 14
Cambiar a la cuenta Postgres 14
Accediendo a la cuenta de Postgres 14
Durante la instalación de PostgreSQL, se crea automáticamente una cuenta de usuario llamada 'postgres'. Esta cuenta está asociada con la función predeterminada de Postgres, que posee privilegios de superusuario. Para acceder a la base de datos PostgreSQL, cambie a la cuenta 'postgres' usando el comando:
sudo -i -u postgres
Ingresando al mensaje de PostgreSQL 14
Una vez que haya cambiado al usuario 'postgres', acceda al indicador de PostgreSQL directamente escribiendo psql. Tras una conexión exitosa, el indicador del terminal cambia a postgres=#, lo que indica una conexión activa a la base de datos.
Para salir de la base de datos PostgreSQL, simplemente escriba:
psql
Método alternativo para acceder a PostgreSQL 14
Usando Sudo para acceso directo
Alternativamente, interactúe con la base de datos PostgreSQL sin cambiar de cuenta usando:
exit
Alternativa a cambiar de cuenta de Postgres
Una forma alternativa de interactuar con la base de datos de Postgres sin cambiar las cuentas de usuario es utilizar un comando sudo para conectarse directamente. Puedes hacer esto escribiendo:
sudo -u postgres psql
Este comando es eficaz para interacciones rápidas con la base de datos, ya que omite comandos de terminal adicionales.
Para salir, como con el primer método, escriba salir.
exit
Crear usuario y base de datos con PostgreSQL 14
Crear una nueva función de usuario
Solo los superusuarios y roles con el privilegio createrole pueden crear nuevos roles. Para crear un usuario, use el comando:
sudo su - postgres -c "createuser <name>"
Reemplazar con el nombre de usuario deseado.
Creando una nueva base de datos
A continuación, cree una base de datos PostgreSQL para el usuario recién creado:
sudo su - postgres -c "createdb <namedb>"
Reemplazar con el nombre de la base de datos deseada.
Conceder permisos
Para otorgar permisos al nuevo usuario en la nueva base de datos, primero conéctese a la base de datos PostgreSQL como superusuario:
sudo -u postgres psql
Luego, otorgue todos los privilegios al nuevo usuario:
GRANT ALL PRIVILEGES ON DATABASE <usernamedb> TO <name>;
Reemplazar con el nombre de la base de datos y con el nombre de usuario. Para salir, escriba salir.
exit
Configurar Firewalld para PostgreSQL 14
Establecimiento de reglas de firewall para PostgreSQL 14
Proteger PostgreSQL implica algo más que instalar y ejecutar el servicio; Es crucial configurar los controles de acceso a la red de manera efectiva. Esto protege la base de datos y garantiza que solo llegue a ella el tráfico legítimo. Revisaremos la configuración de firewalld, un administrador de firewall dinámico en Fedora, para proteger PostgreSQL.
Creando una zona de firewall para PostgreSQL
Primero, cree una zona dedicada en firewalld para PostgreSQL. Este enfoque permite un control más granular y claridad en la gestión de reglas específicas de PostgreSQL:
sudo firewall-cmd --permanent --new-zone=postgres
Este comando establece una zona 'postgres', aislando las reglas de firewall relacionadas con PostgreSQL para facilitar la administración.
Restringir el acceso a direcciones IP conocidas
Permitir el acceso desde una única dirección IP
Para escenarios en los que solo un cliente o servidor debe acceder a PostgreSQL:
sudo firewall-cmd --permanent --zone=postgres --add-source=1.2.3.4
Reemplace 1.2.3.4 con la dirección IP específica que requiere acceso a la base de datos.
Permitir una subred
En entornos como redes corporativas, puede ser necesario permitir una subred completa:
sudo firewall-cmd --permanent --zone=postgres --add-source=192.168.1.0/24
Aquí, 192.168.1.0/24 representa la subred. Ajuste este valor para que coincida con el rango de red deseado.
Otorgar acceso a múltiples IP específicas
Para escenarios con varias IP conocidas que requieren acceso:
sudo firewall-cmd --permanent --zone=postgres --add-source=1.2.3.4
sudo firewall-cmd --permanent --zone=postgres --add-source=1.2.3.5
Repita este comando para cada dirección IP.
Administrar el acceso al puerto para PostgreSQL 14
Configurar el puerto PostgreSQL predeterminado
Para instalaciones estándar que utilizan el puerto predeterminado:
sudo firewall-cmd --permanent --zone=postgres --add-port=5432/tcp
Personalización de la configuración del puerto
Si PostgreSQL opera en un puerto no estándar (por ejemplo, 5433):
sudo firewall-cmd --permanent --zone=postgres --add-port=5433/tcp
Modifique el número de puerto según su configuración específica de PostgreSQL.
Implementación y verificación de las nuevas reglas del firewall
Aplicar los cambios
Para activar las nuevas reglas, recarga firewalld:
sudo firewall-cmd --reload
Este paso garantiza que las nuevas configuraciones entren en vigor de inmediato.
Comprobando las configuraciones
Después de la configuración, es prudente revisar las reglas establecidas para la zona 'postgres':
sudo firewall-cmd --list-all --zone=postgres
Este comando muestra todas las reglas activas en la zona 'postgres', lo que permite la verificación del archivo setup.exp.
Configuración de acceso remoto para PostgreSQL 14
Configuración de interfaces de escucha para acceso remoto
Modificando la configuración de PostgreSQL
Para habilitar el acceso remoto a PostgreSQL, es necesario ajustar la configuración de la interfaz en el archivo postgresql.conf. Este proceso permite a PostgreSQL aceptar conexiones de varias fuentes.
Asegúrese de que la configuración de FirewallD esté implementada para permitir el acceso remoto, como se describe en las secciones anteriores.
Accediendo al archivo de configuración
Para modificar la configuración de PostgreSQL 14, use el editor de texto nano:
sudo nano /var/lib/pgsql/14/data/postgresql.conf
Editar la dirección de escucha
En la sección "Configuración de conexión", cambie listen_addresses de 'localhost' según sus requisitos:
- Escuche en todas las interfaces: para aceptar conexiones de cualquier fuente, configure listening_addresses en '*'.
listen_addresses = '*'
- Escuche en una interfaz específica: especifique una dirección IP para restringir las conexiones a una interfaz en particular.
listen_addresses = '192.168.1.100'
Después de editarlo, guarde el archivo (Ctrl + O, luego Enter) y salga (Ctrl + X).
Reiniciar el servicio PostgreSQL 14
Aplique los cambios reiniciando el servicio PostgreSQL:
sudo systemctl restart postgresql-14
Confirmación de puertos de escucha
Utilice la utilidad ss para verificar que PostgreSQL esté escuchando en los puertos especificados:
ss -nlt | grep 5432
Si tiene éxito, debería ver los puertos en el puerto de su terminal.
Configuración avanzada de conexión remota en pg_hba.conf
Adaptación del acceso en el archivo pg_hba.conf
Para un control detallado de las conexiones remotas, el archivo pg_hba.conf ofrece varias opciones de personalización.
Editando pg_hba.conf
Abra el archivo pg_hba.conf:
sudo nano /var/lib/pgsql/14/data/pg_hba.conf
Configurar reglas de acceso remoto
Permitir usuarios y bases de datos específicos
Para limitar el acceso a un usuario y una base de datos específicos desde una dirección IP particular:
alojar mi base de datos mi usuario 192.168.1.100/32 md5
Permitir una subred
Para un acceso más amplio, como una subred completa:
alojar todos todos 192.168.1.0/24 md5
Usar diferentes métodos de autenticación
Elija un método de autenticación adecuado para su entorno. Para autenticación basada en contraseña:
alojar todo todo 0.0.0.0/0 md5
Para autenticación de confianza (tenga en cuenta los riesgos de seguridad):
alojar todo todo 0.0.0.0/0 confianza
Después de configurar las reglas deseadas, guarde y salga del editor.
Aplicar y verificar cambios
Reinicie PostgreSQL para implementar las nuevas configuraciones:
sudo systemctl restart postgresql-14
Verifique la configuración efectiva en pg_hba.conf usando:
cat /var/lib/pgsql/14/data/pg_hba.conf
Configurar SELinux para PostgreSQL 14
Al configurar PostgreSQL 14 en Fedora, es esencial configurar SELinux (Linux con seguridad mejorada) correctamente. SELinux agrega una capa de seguridad al hacer cumplir políticas de control de acceso. Una mala configuración puede provocar problemas comunes como denegaciones de acceso o interrupciones del servicio.
Configuración de SELinux en modo permisivo para solucionar problemas
Ajuste temporal del modo SELinux
Si tiene problemas con el inicio o funcionamiento correcto de PostgreSQL, considere configurar SELinux temporalmente en modo 'Permisivo'. Este modo permite operaciones que se bloquearían en el modo "Aplicar", pero las registra para su revisión:
sudo setenforce 0
Registros de monitoreo para denegaciones de AVC
Verifique los registros de SELinux para ver si hay denegaciones de AVC (Access Vector Cache):
sudo restorecon -Rv /var/lib/pgsql/14/data/
Este comando ayuda a identificar las políticas de SELinux que impiden que PostgreSQL funcione correctamente.
Configuración de políticas SELinux para PostgreSQL 14
Restaurar el contexto SELinux predeterminado
Para asegurarse de que los archivos tengan el contexto SELinux correcto, utilice el comando recoverycon. Los contextos incorrectos en directorios o archivos de PostgreSQL pueden causar problemas de acceso:
sudo setsebool -P postgresql_can_rnetwork 1
Este comando habilita el booleano postgresql_can_rnetwork, permitiendo conexiones de red.
Configuración avanzada de SELinux
Personalización de políticas SELinux
En configuraciones más complejas, como cuando PostgreSQL interactúa con otros servicios o puertos personalizados, puede ser necesario crear políticas SELinux personalizadas. Utilice la herramienta audit2allow para generar módulos de políticas personalizados según necesidades específicas.
Aplicar políticas personalizadas
Después de crear políticas personalizadas, aplíquelas usando:
sudo semodule -i my_postgresql.pp
Reemplace my_postgresql.pp con el nombre de su archivo de política.
Verificación de la configuración de SELinux
Comprobando el estado de SELinux
Confirme el estado de SELinux para asegurarse de que esté configurado correctamente para su instalación de PostgreSQL:
sestatus
Validación de contextos de archivos
Verifique que los archivos y directorios relacionados con PostgreSQL tengan los contextos SELinux apropiados:
ls -Z /var/lib/pgsql/14/data/
Conclusión
Con PostgreSQL 14 instalado exitosamente en su sistema Fedora, puede aprovechar sus funciones avanzadas y su sólido rendimiento para las necesidades de su base de datos. Verifique periódicamente si hay actualizaciones y mejoras futuras de las compilaciones RPM de PostgreSQL para mantener su sistema actualizado.
Para obtener más información sobre el uso de PostgreSQL, visite el sitio oficial documentación.