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.
- 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.
- Haga clic en Siguiente para continuar.
- 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.
- 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.
- Especifique una contraseña segura que se asignará al usuario
postgres
. Haga clic en Siguiente cuando haya terminado.
- 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.
- Seleccione la configuración regional de la base de datos y pulse Siguiente para continuar.
- 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.
- 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.
- Espere a que finalice la instalación. Se mostrará una confirmación de la misma.
- 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 busqueSQL Shell (psql)
y haga clic en su icono para abrir el shellpsql
.
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 usuariopostgres
durante el asistente de instalación. Esto le llevará al promptpostgres=#
.
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.