PostgreSQL es uno de los sistemas de bases de datos objeto-relacionales populares, multiplataforma y de código abierto que es robusto, de alto rendimiento y fiable y cuenta con una comunidad sólida.

Se remonta a 1986 como parte del proyecto POSTGRES de la Universidad de California, Berkeley, y lleva 30 años de desarrollo activo en su plataforma central. Su rendimiento constante a lo largo de los años ha demostrado su integridad, arquitectura y extensibilidad para uso empresarial. Es compatible con ACID y ofrece soporte para potentes complementos como el popular extensor de bases de datos geoespaciales PostGIS.

Vamos a cubrir la instalación de PostgreSQL en plataformas comunes en este artículo.

Así que empecemos.

Ubuntu

PostgreSQL está disponible para todos los sabores y versiones de Ubuntu. Usted tiene la opción de instalar y utilizar la versión disponible por defecto con su versión de Ubuntu y soportada de por vida o utilizar una versión específica añadiendo el repositorio PostgreSQL e instalando la misma. Cubriremos ambas opciones aquí.

Para utilizar la versión soportada por defecto proporcionada por el repositorio de Ubuntu, ejecute:

$ sudo apt-get update
$ sudo apt-get -y install postgresql

El repositorio apt de PostgreSQL soporta las versiones LTS actuales de Ubuntu, es decir, 20.04, 18.04 y 16.04. Aunque no sea totalmente compatible, los mismos paquetes funcionan también en versiones no LTS utilizando la versión LTS más cercana.

Para utilizar el repositorio apt de PostgreSQL, siga estos pasos:

$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get -y install postgresql

Para instalar una versión específica del repositorio PostgreSQL, en lugar de sólo postgresql que se refiere a la última versión, especifíquelo como postgresql-12:

$ sudo apt-get -y install postgresql-12

El repositorio también contiene diferentes paquetes, incluidos complementos de terceros. Por ejemplo, los paquetes comúnmente disponibles para la versión 12 de PostgreSQL incluyen:

postgresql-client-12 bibliotecas cliente y binarios cliente
postgresql-12 servidor central de bases de datos
postgresql-contrib-9.x módulos adicionales suministrados (parte del paquete postgresql-xx en la versión 10 y posteriores)
libpq-dev bibliotecas y cabeceras para el desarrollo del frontend en lenguaje C
postgresql-server-dev-12 bibliotecas y cabeceras para el desarrollo del backend en lenguaje C
pgadmin4 utilidad gráfica de administración pgAdmin 4

Una vez completada la instalación, puede comprobar el estado del servicio DB utilizando el siguiente comando:

$ sudo systemctl status postgresql.service

Para Ubuntu, después de la instalación, el servicio debe estar habilitado y funcionando como:

$ sudo systemctl status postgresql.service
● postgresql.service - SGBDR PostgreSQL
     Cargado: cargado (/lib/systemd/system/postgresql.service; habilitado; preconfiguración del proveedor: habilitado)
     Activo: activo (salido) desde dom 2021-06-06 16:06:45 UTC; hace 46s
   PID principal: 3364 (code=exited, status=0/SUCCESS)
      Tareas: 0 (límite: 1113)
     Memoria 0B
     Grupo C /system.slice/postgresql.service

Jun 06 16:06:45 ubuntu20cloud systemd<x><x><x>[1]</x></x></x>: Iniciando PostgreSQL RDBMS...
Jun 06 16:06:45 ubuntu20cloud systemd<x><x><x>[</x></x></x>1]: Finalizado PostgreSQL RDBMS.
$

CentOS

Al igual que Ubuntu, los repositorios de RHEL/CentOS también contienen una versión específica de PostgreSQL, que está soportada durante toda la vida útil para el SO. Puede instalar la misma utilizando

$ sudo yum install -y postgresql-server

o puede utilizar DNF si utiliza CentOS 8.

$ sudo dnf install -y postgresql-server

Ejecute los siguientes comandos post-instalación para inicializar la BD, habilitar el servicio PostgreSQL e iniciarlo:

$ sudo postgresql-setup initdb
$ sudo systemctl enable postgresql.service
$ sudo systemctl start postgresql.service

O para utilizar los paquetes directamente desde los repositorios yum de PostgreSQL, tenemos que añadir el repositorio como:

$ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Y luego para instalar una versión específica de PostgreSQL como la versión 13, que es la última versión estable en el momento de escribir este artículo, utilice:

$ sudo yum install -y postgresql13-server

el repositorio yum también contiene paquetes adicionales para PostgreSQL, de los cuales algunos de los más importantes se enumeran a continuación:

postgresql-client bibliotecas y binarios cliente
postgresql-server núcleo del servidor de base de datos
postgresql-contrib módulos adicionales suministrados
postgresql-devel bibliotecas y cabeceras para el desarrollo en lenguaje C

Ejecute los siguientes pasos posteriores a la instalación para inicializar la BD, habilitar el servicio PostgreSQL e iniciarlo:

$ sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
$ sudo systemctl enable postgresql-13
$ sudo systemctl start postgresql-13

Puede comprobar el estado del servicio DB utilizando el siguiente comando:

$ sudo systemctl status postgresql.service
● postgresql.service - Servidor de base de datos PostgreSQL
   Cargado: cargado (/usr/lib/systemd/system/postgresql.service; activado; preconfiguración del proveedor: desactivado)
   Activo: activo (en ejecución) desde dom 2021-06-06 16:39:35 GMT; hace 1min 12s
  Proceso: 7011 ExecStart=/usr/bin/pg_ctl start -D ${PGDATA} -s -o -p ${PGPORT} -w -t 300 (code=exited, status=0/SUCCESS)
  Proceso: 7005 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/postgresql.service
           ├─7014 /usr/bin/postgres -D /var/lib/pgsql/data -p 5432
           ├─7015 postgres: proceso logger
           ├─7017 postgres: proceso checkpointer
           ├─7018 postgres: proceso escritor
           ├─7019 postgres: proceso de escritor wal
           ├─7020 postgres: proceso lanzador autovacuum
           └─7021 postgres: proceso recolector de estadísticas

06 Jun 16:39:34 centos7cloud systemd<x><x><x>[1]</x></x></x>: Iniciando servidor de base de datos PostgreSQL...
Jun 06 16:39:35 centos7cloud systemd<x><x><x>[</x></x></x>1]: Iniciado servidor de base de datos PostgreSQL.
$

Windows

Los instaladores para Windows de 32 y 64 bits están disponibles en el sitio oficial de PostgreSQL aquí.

  • Puede descargar el binario aplicable en función de la versión y arquitectura requeridas.

postgresql-download

  • Nosotros descargaremos la última versión disponible, que es la v13.3 para la plataforma Windows de 64 bits. Una vez finalizada la descarga, inicie el instalador haciendo doble clic sobre él.

postgresql-install-launch

  • Haga clic en Siguiente para continuar.

postgresql-install-location

  • Haga clic en Siguiente para continuar con la ruta predeterminada o especifique su ruta de instalación personalizada.

  • Puede mantener seleccionados los componentes por defecto y hacer clic en Siguiente para continuar.

postgresql-install-datadir

  • A continuación, le preguntará por la ubicación del directorio de datos; puede mantenerla como predeterminada a menos que tenga asignado un disco o directorio dedicado independiente para ello. Haga clic en Siguiente para continuar.

postgresql-install-password

  • Especifique una contraseña segura que se asignará al usuario postgres. Haga clic en Siguiente cuando haya terminado.

postgresql-install-port

  • El puerto por defecto 5432 debería ser bueno para la mayoría de los casos. Haga clic en Siguiente para pasar a la página siguiente.

postgresql-install-locale

  • Seleccione la configuración regional de la base de datos y pulse Siguiente para continuar.

postgresql-install-confirmation

  • Todos los ajustes seleccionados para el asistente de instalación aparecerán en una lista para que los revise y confirme. Si es necesario cambiar algo, vuelva atrás y cambie lo mismo o haga clic en Siguiente para pasar a la página siguiente.

postgresql-install-confirmation-1

  • La instalación mostrará que está lista para proceder con la instalación. Cuando esté listo, haga clic en Siguiente para iniciar la instalación.

postgresql-install-progress

  • Espere a que finalice la instalación. Se mostrará una confirmación de la misma.

postgresql-install-completed

  • Una vez completada, puede desmarcar Stack Builder y hacer clic en Finalizar para salir del asistente de instalación. Haga clic en el menú Inicio y busque SQL Shell (psql) y haga clic en su icono para abrir el shell psql.

psql-start-menu

  • Se abrirá SQL Shell (psql) donde podrá interactuar con su <a href="https://geekflare.com/es/postgresql-monitoring-tools/">instancia PostgreSQL tras especificar los detalles de la conexión</a>. Todos los elementos pueden seleccionarse como predeterminados simplemente pulsando <code>Intro, excepto la contraseña, donde deberá introducir la contraseña especificada para el usuario postgres durante el asistente de instalación. Esto le llevará al prompt postgres=#.

psql-sql-shell-windows

Conectarse a PostgreSQL

Se crea automáticamente un usuario postgres tras la instalación, que tiene acceso de superadministrador a la instancia DB. En Linux, como usuario privilegiado, puede cambiar a esta cuenta como:

$ sudo su - postgres

Una vez dentro, podemos restablecer la contraseña del usuario postgres como:

$ psql -c "alter user postgres with password 'P@SsW0rdH3r3'"

Y luego lanzar el prompt de PostgreSQL con psqlas:

$ psql

Esto le llevará al prompt de PostgreSQL:

$ psql
psql (12.7 (Ubuntu 12.7-0ubuntu0.20.04.1))
Escriba "help" para obtener ayuda.

postgres=#

En este prompt, puede interactuar con la base de datos y realizar tareas de administrador o usuario de la BD. Como demostración, los siguientes pasos crean una BD y un usuario y luego asignan privilegios al nuevo usuario para trabajar en la nueva base de datos:

postgres=# CREAR BASE DE DATOS geekflaredb;
CREAR BASE DE DATOS
postgres=# CREAR USUARIO geekuser CON CONTRASEÑA ENCRYPTED 'N3wP@33w0rD';
CREAR ROL
postgres=# CONCEDER TODOS LOS PRIVILEGIOS SOBRE LA BASE DE DATOS geekflaredb a geekuser;
GRANT
postgres=#

A continuación podemos listar las BDs utilizando el comando \l:

postgres=# \l
                               Lista de bases de datos
    Nombre | Propietario | Codificación | Ctype | Privilegios de acceso
------------- ---------- ---------- --------- --------- -----------------------
 geekflaredb | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =Tc/postgres          
             | | | | postgres=CTc/postgres 
             | | | | geekuser=CTc/postgres
 postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 | C.UTF-8
 template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres           
             | | | | postgres=CTc/postgres
 template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres           
             | | | | postgres=CTc/postgres
(4 filas)

postgres=#

Ahora puede simplemente conectarse a una BD utilizando:

postgres=# \c geekflaredb
Ahora está conectado a la base de datos "geekflaredb" como usuario "postgres".
geekflaredb=#

Resumen

PostgreSQL es una de las bases de datos más adoptadas en el mundo empresarial por su robustez, conjunto de características y escalabilidad. Es fácil de aprender e intenta ser compatible con los estándares SQL.

Hay un tutorial disponible para PostgreSQL en su sitio oficial.