Instalación de PostgreSQL: Una guía completa paso a paso

Instala PostgreSQL en Linux, macOS o Windows, luego crea un usuario, verifica el acceso y configura conexiones de red seguras.

Instalación de PostgreSQL: Una Guía Completa Paso a Paso

La instalación de PostgreSQL suele ser sencilla, pero los detalles difieren entre Linux, macOS y Windows. El objetivo no es solo poner el servicio en funcionamiento; también necesitas un usuario de base de datos utilizable, una forma limpia de conectarte y valores predeterminados seguros para el acceso a la red.

Usa esta guía para instalar PostgreSQL para desarrollo o una configuración de servidor pequeño, luego adapta las rutas y números de versión a los paquetes actuales de tu sistema operativo.

Prerrequisitos

Antes de comenzar el proceso de instalación, asegúrate de que tu sistema cumpla con estos requisitos básicos:

  • Privilegios Administrativos: Necesitarás privilegios sudo en Linux/macOS o derechos de administrador en Windows para instalar software y configurar servicios del sistema.
  • Conexión a Internet: Requerida para descargar los paquetes de instalación.
  • Espacio en Disco Suficiente: Aunque la instalación inicial es relativamente pequeña, tu base de datos crecerá. Asegúrate de tener suficiente espacio en disco para tus datos.

Instalación en Linux

Las distribuciones de Linux suelen ofrecer PostgreSQL a través de sus repositorios de paquetes predeterminados, lo que hace que la instalación sea sencilla.

Debian/Ubuntu

Para sistemas basados en Debian como Ubuntu, puedes instalar PostgreSQL usando apt.

  1. Actualizar Listas de Paquetes: Siempre comienza actualizando las listas de tu gestor de paquetes para asegurarte de obtener los paquetes más recientes disponibles.

    sudo apt update
    
  2. Instalar PostgreSQL: Instala el paquete postgresql, que a menudo incluye el servidor, las utilidades de cliente y la documentación. Puedes especificar una versión (por ejemplo, postgresql-16) o instalar la versión predeterminada usando solo postgresql.

    sudo apt install postgresql postgresql-contrib
    

    El paquete postgresql-contrib proporciona utilidades y funcionalidades adicionales.

    Nota: En Debian/Ubuntu, el servicio de PostgreSQL suele iniciarse automáticamente después de la instalación y se crea un usuario postgres predeterminado (tanto de sistema como de base de datos).

  3. Verificar Instalación: Comprueba el estado del servicio.

    sudo systemctl status postgresql
    

    Deberías ver una salida que indica que está active (exited) o active (running). exited es normal para la unidad de servicio principal si gestiona múltiples clústeres que se ejecutan como procesos separados.

RHEL/CentOS/Fedora

Para sistemas basados en Red Hat, usa dnf (o yum para versiones antiguas de CentOS/RHEL).

  1. Instalar Repositorio de PostgreSQL: PostgreSQL proporciona su propio repositorio para versiones más recientes que las disponibles en los repositorios predeterminados del SO. Se recomienda usar este para las últimas versiones estables.

    sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    # Para EL-9, usa: sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    # Reemplaza EL-8-x86_64 con tu versión específica del SO y arquitectura si es necesario.
    
  2. Deshabilitar Módulo PostgreSQL Predeterminado (si aplica): Algunas versiones de RHEL/CentOS tienen un módulo PostgreSQL predeterminado. Deshabilítalo para evitar conflictos con el repositorio PGDG.

    sudo dnf -qy module disable postgresql
    
  3. Instalar PostgreSQL: Instala los paquetes del servidor y contrib. Reemplaza 16 con tu versión deseada.

    sudo dnf install -y postgresql16-server postgresql16-contrib
    
  4. Inicializar el Clúster de Base de Datos: A diferencia de Debian/Ubuntu, en sistemas basados en RHEL, a menudo necesitas inicializar manualmente el clúster de base de datos.

    sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
    

    Ajusta la ruta /usr/pgsql-16/bin y postgresql-16-setup según tu versión instalada.

  5. Iniciar y Habilitar el Servicio de PostgreSQL: Inicia el servicio y configúralo para que se inicie al arrancar.

    sudo systemctl enable postgresql-16
    sudo systemctl start postgresql-16
    
  6. Verificar Instalación: Comprueba el estado del servicio.

    sudo systemctl status postgresql-16
    

Instalación en macOS

En macOS, Homebrew es el método recomendado y más fácil para instalar PostgreSQL.

  1. Instalar Homebrew (si aún no lo has hecho):

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    

    Sigue las instrucciones en pantalla, incluyendo agregar Homebrew a tu PATH.

  2. Instalar PostgreSQL: Usa Homebrew para instalar PostgreSQL. Puedes especificar una versión (por ejemplo, postgresql@16) o instalar la última versión estable por defecto.

    brew install postgresql
    
  3. Iniciar el Servicio de PostgreSQL: Homebrew instala PostgreSQL como un servicio en segundo plano.

    brew services start postgresql
    

    Para detenerlo: brew services stop postgresql Para reiniciarlo: brew services restart postgresql

  4. Verificar Instalación: Comprueba si psql está disponible y conectado.

    psql -V
    

    Para conectarte a la base de datos predeterminada:

    psql postgres
    

    Consejo: Para una experiencia visual basada en aplicaciones, considera Postgres.app, que proporciona una forma sencilla de ejecutar y gestionar PostgreSQL sin la línea de comandos.

Instalación en Windows

Para Windows, el instalador gráfico de EnterpriseDB (EDB) es el método más común para una configuración local de PostgreSQL.

  1. Descargar el Instalador: Visita la página oficial de descarga de PostgreSQL (www.postgresql.org/download/windows/) y descarga el último instalador de EDB para tu versión de Windows.

  2. Ejecutar el Instalador: Ejecuta el archivo .exe descargado. El asistente de instalación te guiará a través del proceso.

    • Directorio de Instalación: Elige dónde se instalará PostgreSQL (por ejemplo, C:\Program Files\PostgreSQL\16).
    • Directorio de Datos: Selecciona una ubicación para tus archivos de base de datos (por ejemplo, C:\Program Files\PostgreSQL\16\data). Esto es crucial y debería estar idealmente en un disco rápido y confiable.
    • Contraseña para el Superusuario postgres: Establece una contraseña segura para el superusuario de base de datos postgres predeterminado. Recuerda esta contraseña ya que la necesitarás para conectarte inicialmente.
    • Puerto: El puerto predeterminado de PostgreSQL es 5432. Generalmente es seguro dejarlo como predeterminado a menos que tengas conflictos.
    • Locale: Elige el locale predeterminado para tu clúster de base de datos.
  3. Stack Builder: Después de la instalación, el instalador de EDB podría lanzar Stack Builder. Esta herramienta ayuda a instalar controladores, herramientas y extensiones adicionales (como pgAdmin 4). Se recomienda encarecidamente instalar pgAdmin 4 para una interfaz gráfica para gestionar tus bases de datos.

  4. Verificar Instalación: Después de la instalación, puedes abrir pgAdmin 4 (generalmente se encuentra en el Menú Inicio bajo "PostgreSQL 16" o similar) e intentar conectarte a tu servidor local usando el superusuario postgres y la contraseña que estableciste.

Configuración Inicial y Pasos Posteriores a la Instalación

Una vez que PostgreSQL está instalado, estos pasos son esenciales para una configuración funcional y segura.

1. Establecer la Variable de Entorno PATH (Opcional, principalmente para Windows/macOS si no se encuentra psql)

Para ejecutar fácilmente psql y otros binarios de PostgreSQL desde cualquier ubicación de terminal, agrega el directorio bin de PostgreSQL al PATH de tu sistema.

  • Linux: A menudo lo maneja el gestor de paquetes, pero si no, agrega /usr/pgsql-X.Y/bin (RHEL) o /usr/lib/postgresql/X.Y/bin (Debian/Ubuntu) a tu PATH.
  • macOS (Homebrew): brew maneja esto automáticamente.
  • Windows: Durante la instalación de EDB, hay una opción para agregar al PATH. Si no se selecciona, puedes agregar C:\Program Files\PostgreSQL\16\bin (ajusta la versión) manualmente a través de Propiedades del Sistema > Variables de Entorno.

2. Acceder a la Terminal psql

psql es la interfaz de línea de comandos para PostgreSQL, crucial para la administración y consultas.

  • Linux/macOS: Cambia al usuario de sistema postgres (creado durante la instalación).

    sudo -i -u postgres
    psql
    

    Ahora estás conectado a la base de datos postgres como usuario postgres. Escribe \q para salir.

  • Windows: Abre SQL Shell (psql) desde el Menú Inicio (PostgreSQL 16 > SQL Shell (psql)). Te pedirá detalles del servidor y la contraseña del usuario postgres.

3. Crear un Nuevo Usuario de Base de Datos y Base de Datos

Es una buena práctica no usar el superusuario postgres para el uso diario de aplicaciones. Crea un nuevo usuario y base de datos dedicados.

  1. Inicia sesión como superusuario postgres (como se mostró anteriormente).

  2. Crea un nuevo usuario (rol):

    CREATE USER miusuario WITH PASSWORD 'contraseña_segura';
    

    Consejo: Reemplaza miusuario y contraseña_segura con credenciales seguras.

  3. Crea una nueva base de datos y asigna propiedad:

    CREATE DATABASE mibasededatos OWNER miusuario;
    
  4. Otorga privilegios (si es necesario, o el propietario de CREATE DATABASE maneja esto para operaciones básicas):

    GRANT ALL PRIVILEGES ON DATABASE mibasededatos TO miusuario;
    
  5. Sal de psql:

    \q
    

4. Configurar pg_hba.conf para Acceso a la Red

El archivo pg_hba.conf controla la autenticación de clientes. Por defecto, PostgreSQL podría permitir solo conexiones desde localhost (127.0.0.1).

  • Ubicación: Este archivo está típicamente en el directorio de datos de PostgreSQL (por ejemplo, /var/lib/postgresql/16/main/pg_hba.conf en Debian/Ubuntu, /var/lib/pgsql/16/data/pg_hba.conf en RHEL, o C:\Program Files\PostgreSQL\16\data\pg_hba.conf en Windows).

  • Editar el archivo (como root/administrador):

    sudo nano /etc/postgresql/16/main/pg_hba.conf
    

    (Ajusta la ruta para tu SO y versión).

    Para permitir que miusuario se conecte desde una subred confiable usando autenticación por contraseña, agrega una línea como esta:

    # TYPE DATABASE  USER            ADDRESS                 METHOD
    host  mibasededatos  miusuario          192.168.1.0/24          scram-sha-256
    

    scram-sha-256 es el método de contraseña preferido para implementaciones modernas de PostgreSQL. Evita 0.0.0.0/0 a menos que el servidor también esté protegido por reglas de firewall estrictas y realmente necesites acceso amplio.

  • Recargar PostgreSQL: Después de modificar pg_hba.conf, debes recargar el servicio de PostgreSQL para que los cambios surtan efecto.

    sudo systemctl reload postgresql # Linux
    # Para Homebrew en macOS:
    # brew services restart postgresql
    # Para Windows, reinicia el servicio de PostgreSQL a través de Services.msc
    

5. Configurar postgresql.conf (Escucha de Red)

Por defecto, PostgreSQL a menudo escucha solo en localhost. Para aceptar conexiones de otras máquinas, necesitas modificar postgresql.conf.

  • Ubicación: Este archivo está típicamente en el mismo directorio que pg_hba.conf.

  • Editar el archivo:

    sudo nano /etc/postgresql/16/main/postgresql.conf
    

    Encuentra el parámetro listen_addresses y cámbialo solo si los clientes remotos necesitan conectarse:

    #listen_addresses = 'localhost' # qué dirección(es) IP escuchar;
    listen_addresses = 'localhost,192.168.1.10'
    

    Usa la dirección IP privada real del servidor en lugar de 192.168.1.10. listen_addresses = '*' también funciona, pero debe combinarse con reglas restrictivas en pg_hba.conf y el firewall.

  • Reiniciar PostgreSQL: Los cambios en postgresql.conf requieren un reinicio completo del servicio.

    sudo systemctl restart postgresql # Linux
    # brew services restart postgresql # macOS
    # Para Windows, reinicia el servicio de PostgreSQL a través de Services.msc
    

Verificar Tu Instalación

Después de todas las configuraciones, realiza una verificación final:

  1. Comprueba el estado del servicio de PostgreSQL (systemctl status postgresql o brew services list o Servicios de Windows).

  2. Conéctate como tu nuevo usuario a tu nueva base de datos:

    psql -h localhost -U miusuario -d mibasededatos
    

    Se te pedirá la contraseña de miusuario. Si es exitoso, verás el prompt mibasededatos=>. Escribe \q para salir.

    Si te conectas desde una máquina diferente, reemplaza localhost con la dirección IP del servidor.

Consejos y Mejores Prácticas

  • Contraseñas Seguras: Siempre usa contraseñas seguras y únicas para todos los usuarios de la base de datos, especialmente el superusuario postgres.
  • Directorio de Datos Dedicado: Para producción, considera colocar el directorio de datos en un volumen dedicado o arreglo RAID para rendimiento y confiabilidad.
  • Copias de Seguridad Regulares: Implementa una estrategia robusta de copias de seguridad desde el primer día. Las utilidades pg_dump y pg_basebackup de PostgreSQL son excelentes herramientas para esto.
  • Mantenerse Actualizado: Mantén tu instalación de PostgreSQL actualizada para beneficiarte de correcciones de errores, parches de seguridad y nuevas funciones. Usa el gestor de paquetes de tu sistema o sigue el proceso de actualización del instalador de EDB.
  • Configuración del Firewall: Si permites conexiones remotas, asegúrate de que el firewall de tu sistema (por ejemplo, ufw, firewalld, Firewall de Windows) esté configurado para permitir tráfico entrante en el puerto 5432 (o tu puerto elegido).

Conclusión

Una vez que PostgreSQL está instalado, verifica el servicio, conéctate con psql, crea un rol de aplicación y mantén el acceso remoto limitado. Para producción, tu próximo paso deberían ser las copias de seguridad y la monitorización antes de que la base de datos comience a contener datos importantes.