Guías de instalación

Instalación de PostgreSQL y ajustes básicos

Cómo instalar PostgreSQL en Windows, macOS, Ubuntu y Docker y empezar a trabajar con pgAdmin, la creación de roles y bases de datos y los comandos básicos de psql.

Aurora YazılımEquipo editorial 6 min de lectura
Instalación de PostgreSQL y ajustes básicos
¿Cómo se instala PostgreSQL?

Para instalar PostgreSQL se utiliza el instalador oficial de postgresql.org en Windows, Homebrew en macOS, el paquete apt en Ubuntu o la imagen oficial de postgres en Docker. Después se accede con el superusuario postgres, se crean un rol y una base de datos propios para su aplicación y se verifica la conexión con psql o pgAdmin.

¿Qué es PostgreSQL y por qué elegirlo?

PostgreSQL es un sistema de base de datos relacional de código abierto y gratuito, con una trayectoria de casi cuarenta años. Gracias a su seguridad transaccional (ACID), sus potentes tipos de datos, el soporte de JSONB y sus avanzadas opciones de indexación, se utiliza desde proyectos pequeños hasta aplicaciones con mucho tráfico.

Para datos en los que la coherencia es crítica, como reservas, stock, pedidos o anuncios, PostgreSQL es una elección tranquila. Por eso la seguridad transaccional es importante en sistemas donde varias personas modifican el mismo registro a la vez, como un software hotelero o una plataforma e-commerce. Para quien quiera probar PHP y una base de datos en local de forma rápida, la instalación de XAMPP también es un punto de partida práctico. MySQL se usa mucho en proyectos similares; si desea comparar ambos sistemas, puede consultar la guía de instalación de MySQL.

En este artículo repasamos todo lo que necesitará el primer día después de la instalación: crear roles y bases de datos, ajustes de conexión remota, copias de seguridad y los mensajes de error más habituales.

Requisitos antes de instalar

Definir unas cuantas decisiones antes de empezar reduce los problemas posteriores. En un servidor de producción, decida desde el principio qué versión principal va a usar: el salto entre versiones principales exige hacer una copia y restaurarla, o bien usar pg_upgrade.

La elección del método también importa. En un equipo de desarrollo, Docker es la forma más sencilla de ejecutar distintas versiones en varios proyectos sin conflictos. En un servidor de producción, en cambio, un servicio instalado con el gestor de paquetes del sistema operativo ofrece una estructura más predecible para recibir actualizaciones de seguridad, revisar los logs y gestionar el arranque automático.

  • Un usuario con permisos de administrador (Windows) o de sudo (macOS, Linux)
  • Que el puerto 5432, el predeterminado, no esté siendo utilizado por otra aplicación
  • Información sobre la versión principal vigente y compatible en el sitio oficial: postgresql.org
  • Una contraseña robusta para el superusuario, guardada en un lugar seguro
  • Una instalación de Docker en funcionamiento, si va a instalar con Docker

Instalación según el sistema operativo

Cada uno de los métodos siguientes instala desde fuentes oficiales o recomendadas oficialmente. Sustituya el marcador de versión de los comandos por la versión principal que haya elegido.

Windows

Descargue desde la página de Windows de postgresql.org el instalador preparado por EDB. El asistente instala el servidor, pgAdmin, las herramientas de línea de comandos y Stack Builder; le pedirá la contraseña del usuario postgres, el puerto y la configuración regional.

Para poder usar el comando psql en cualquier terminal después de la instalación, añada la carpeta bin a la variable PATH. El acceso directo SQL Shell (psql) del menú Inicio cumple la misma función.

powershellComprobación de PATH y verificación de la versión
# El nombre de la carpeta cambia según la versión principal que haya instalado
$env:Path += ";C:\Program Files\PostgreSQL\<versión>\bin"
psql --version
psql -U postgres -h localhost

macOS (Homebrew)

En Homebrew, PostgreSQL se distribuye en paquetes con número de versión. Primero liste los paquetes disponibles, después instale la versión principal que desee e inícielo como servicio. Si prefiere una interfaz gráfica, Postgres.app es otra alternativa muy extendida.

bash
brew search postgresql
brew install postgresql@<versión>
brew services start postgresql@<versión>
# Los paquetes con número de versión pueden no añadirse automáticamente al PATH;
# aplique la línea echo 'export PATH=...' de la salida de la instalación
psql --version
psql postgres

Ubuntu y Debian

El paquete del repositorio propio de la distribución basta para la mayoría de los proyectos. Si necesita una versión principal más reciente, puede instalarla añadiendo el repositorio PGDG que describe postgresql.org.

bash
sudo apt update
sudo apt install postgresql postgresql-contrib
sudo systemctl enable --now postgresql
sudo systemctl status postgresql
sudo -u postgres psql -c "SELECT version();"

Docker

Para un entorno de desarrollo, la imagen oficial de postgres es el camino más limpio: puede encender y apagar la base de datos sin instalar un servicio permanente en su equipo. Para no perder los datos, monte siempre un volumen con nombre (volume).

  • En las imágenes oficiales de la versión 18 en adelante, el volumen se monta en la ruta /var/lib/postgresql.
  • En las imágenes de la versión 17 y anteriores, monte el volumen en la ruta /var/lib/postgresql/data; revise la nota en la página de la imagen en Docker Hub.
bash
docker run -d --name pg \
  -e POSTGRES_PASSWORD=GucluBirParola \
  -p 5432:5432 \
  -v pgdata:/var/lib/postgresql \
  postgres:<versión>

docker exec -it pg psql -U postgres

Crear usuario y base de datos

El rol postgres que viene con la instalación es el superusuario; conectar su aplicación con este rol no es adecuado desde el punto de vista de la seguridad. Cree para cada proyecto un rol distinto con permisos únicamente sobre su propia base de datos.

En PostgreSQL, usuario y rol son el mismo concepto: un rol con permiso LOGIN se comporta como un usuario. El rol que establezca como propietario de la base de datos podrá crear tablas en el esquema public de esa base.

sqlDentro de psql, con el usuario postgres
CREATE ROLE uygulama WITH LOGIN PASSWORD 'BurayaGucluParola';
CREATE DATABASE magaza OWNER uygulama ENCODING 'UTF8';

-- Usuario de informes de solo lectura
CREATE ROLE rapor WITH LOGIN PASSWORD 'BaskaGucluParola';
GRANT CONNECT ON DATABASE magaza TO rapor;
\c magaza
GRANT USAGE ON SCHEMA public TO rapor;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO rapor;
ALTER DEFAULT PRIVILEGES FOR ROLE uygulama IN SCHEMA public
  GRANT SELECT ON TABLES TO rapor;

Los comandos de psql más usados

psql es el cliente de línea de comandos de PostgreSQL. Los metacomandos que empiezan con una barra invertida no envían SQL al servidor: los interpreta el propio cliente y agilizan mucho la navegación.

Comando¿Qué hace?
\lLista las bases de datos
\c magazaCambia a la base de datos magaza
\dtLista las tablas del esquema actual
\d urunlerMuestra las columnas y los índices de la tabla
\duLista los roles y sus permisos
\xCambia las filas anchas a una visualización vertical
\timingActiva o desactiva la medición del tiempo de las consultas
\?Abre la ayuda de todos los metacomandos
\qSale de psql
bashConexión con el nuevo rol
psql -h localhost -U uygulama -d magaza
# Con cadena de conexión
psql "postgresql://uygulama@localhost:5432/magaza"

Administración con pgAdmin, la interfaz gráfica

pgAdmin es la herramienta de administración oficial y gratuita de PostgreSQL. Viene incluida en el instalador de Windows; en macOS y Linux se instala aparte desde pgadmin.org o se ejecuta con una imagen de Docker.

Al abrirlo por primera vez, defina un servidor nuevo con Register > Server: en la pestaña Connection introduzca localhost como host, el puerto 5432, el usuario y la contraseña. Una vez conectado, podrá explorar las tablas, ejecutar consultas con Query Tool y realizar copias de seguridad y restauraciones desde el menú.

Si va a conectarse a un servidor remoto, es más seguro usar la opción de túnel SSH de pgAdmin que abrir el puerto de la base de datos a internet.

Conexión remota y ajustes básicos

De forma predeterminada, PostgreSQL solo escucha conexiones locales. Como la ubicación de los archivos de configuración varía según el sistema operativo y la versión, averigüe primero su ruta desde psql.

En postgresql.conf, el valor listen_addresses determina las direcciones en las que se escucha, y pg_hba.conf define qué cliente se autentica y con qué método. En las conexiones con contraseña utilice scram-sha-256 y mantenga el rango de IP permitido lo más estrecho posible.

  • shared_buffers: la documentación oficial recomienda, como punto de partida en un servidor dedicado, aproximadamente la cuarta parte de la memoria.
  • max_connections: en lugar de fijarlo en un valor alto, utilice un pool de conexiones en la aplicación.
  • Para encontrar consultas lentas, active el parámetro log_min_duration_statement y analícelas con EXPLAIN ANALYZE.
sql
SHOW config_file;
SHOW hba_file;
SHOW data_directory;
confLínea de ejemplo de pg_hba.conf
# TYPE  DATABASE  USER       ADDRESS          METHOD
host    magaza    uygulama   203.0.113.10/32  scram-sha-256
bash
# Para un cambio en pg_hba.conf basta con recargar
sudo systemctl reload postgresql
# Un cambio en listen_addresses requiere reiniciar
sudo systemctl restart postgresql

Copias de seguridad y errores frecuentes

En cuanto termine la instalación, programe una copia de seguridad automática. pg_dump crea una copia coherente de una sola base de datos; las copias en formato personalizado pueden restaurarse de forma selectiva con pg_restore. Guarde la copia en otra ubicación, no en el mismo servidor.

El rendimiento de la base de datos influye directamente en la velocidad global de la aplicación. Los resultados llegan cuando se abordan juntos los tiempos de consulta, los índices y la respuesta del servidor; este enfoque integral es el que aplicamos en nuestros trabajos de velocidad y rendimiento.

ErrorPosible causa y solución
Peer authentication failedEn Ubuntu, la conexión por socket local usa el método peer; conéctese con contraseña añadiendo -h localhost.
Connection refusedEl servicio no está en ejecución o el puerto es distinto; revise systemctl status postgresql y la configuración del puerto.
password authentication failedLa contraseña o el nombre de usuario son incorrectos; renueve la contraseña con ALTER ROLE.
psql no se reconoceLa carpeta bin no está en PATH; en Windows, añádala a la variable de entorno.
permission denied for schema publicEl rol no es el propietario de la base de datos; conceda la propiedad o defina los permisos sobre el esquema.
bash
pg_dump -h localhost -U uygulama -F c -f magaza.dump magaza
pg_restore -h localhost -U uygulama -d magaza --clean magaza.dump

Preguntas frecuentes

01¿Se puede usar PostgreSQL sin pgAdmin?

Sí. pgAdmin es solo una interfaz de administración; el servidor funciona con independencia de ella. psql, los complementos de bases de datos de los editores de código u otros clientes cumplen la misma función.

02¿Debo elegir PostgreSQL o MySQL?

Ambos sistemas son maduros y fiables. Si destacan los tipos de datos avanzados, JSONB y las consultas complejas, PostgreSQL; si es importante que esté disponible en los proveedores de hosting, MySQL suele resultar más práctico. La decisión debe tomarse según las necesidades del proyecto.

03¿Cómo conecto mi proyecto de Python a PostgreSQL?

El controlador más extendido es psycopg; Django y SQLAlchemy también lo utilizan. Si su entorno aún no está listo, complete primero los pasos de la instalación de Python y, después, instale el controlador con pip dentro de un entorno virtual.

04¿Cómo se actualiza a una nueva versión principal?

Entre versiones principales, el directorio de datos no se puede reutilizar directamente. En bases de datos pequeñas se prefiere hacer una copia con pg_dumpall y restaurarla en la nueva versión; en las grandes, la herramienta pg_upgrade. En ambos casos, haga antes una copia de seguridad completa.

Si instala PostgreSQL y lo pone en marcha con un rol propio, una regla de acceso estricta y copias de seguridad periódicas, habrá sentado una base sólida. Si busca un software que aborde el trabajo de principio a fin, del diseño de la base de datos a la puesta a punto del servidor, eche un vistazo a las soluciones de Aurora o contacte con nosotros a través de la página de contacto. Para otros pasos, puede consultar la categoría de guías de instalación.