Instalación y configuración inicial de PostgreSQL

PostgreSQLBeginner
Practicar Ahora

Introducción

En este laboratorio, instalaremos y realizaremos la configuración inicial de PostgreSQL en la máquina virtual de LabEx. El objetivo es poner en marcha PostgreSQL y verificar su funcionalidad básica.

Comenzaremos actualizando las listas de paquetes e instalando el servidor PostgreSQL junto con el paquete postgresql-contrib. Tras la instalación, verificaremos que el servicio de PostgreSQL esté en ejecución y aceptando conexiones mediante el comando pg_isready. Finalmente, exploraremos las bases de datos predeterminadas y comprobaremos el estado del servidor y su configuración básica.

Instalar PostgreSQL y verificar la instalación

En este paso, instalaremos PostgreSQL en la máquina virtual de LabEx y verificaremos que la instalación se haya realizado correctamente. PostgreSQL es un potente sistema de gestión de bases de datos relacionales (RDBMS) de código abierto.

Primero, actualicemos las listas de paquetes para las actualizaciones e instalaciones nuevas. Abre una terminal en la máquina virtual de LabEx. Puedes encontrar el icono de la terminal en el escritorio.

Ejecuta el siguiente comando:

sudo apt update

Este comando actualiza la lista de paquetes disponibles y sus versiones, pero no instala ni actualiza ningún paquete. Deberías ver una salida que indica que las listas de paquetes se están actualizando.

A continuación, instala el servidor PostgreSQL y el paquete postgresql-contrib. El paquete postgresql-contrib proporciona utilidades y funcionalidades adicionales que suelen ser muy útiles.

Ejecuta el siguiente comando:

sudo apt install postgresql postgresql-contrib -y

Salida de la instalación de PostgreSQL

El indicador -y responde automáticamente "sí" a cualquier solicitud durante el proceso de instalación. Este comando descargará e instalará PostgreSQL y sus paquetes relacionados. Verás mucha información en pantalla a medida que se descargan e instalan los paquetes.

Una vez completada la instalación, debemos verificar que PostgreSQL esté en ejecución. PostgreSQL debería iniciarse automáticamente tras la instalación.

Para comprobar el estado del servicio de PostgreSQL, ejecuta el siguiente comando:

sudo service postgresql status

También podemos utilizar el comando pg_isready para comprobar si el servidor PostgreSQL está en ejecución y aceptando conexiones.

Ejecuta el siguiente comando:

pg_isready

Si PostgreSQL está en ejecución, deberías ver la siguiente salida:

/var/run/postgresql:5432 - accepting connections

Si PostgreSQL no está en ejecución, es posible que veas un mensaje de error como:

/var/run/postgresql:5432 - no response

Si te encuentras con el error "no response", intenta reiniciar el servicio de PostgreSQL. Puedes probar con el siguiente comando:

sudo service postgresql restart

Luego, vuelve a ejecutar pg_isready para comprobar el estado.

Salida del comando pg_isready que muestra una instalación exitosa

Si pg_isready muestra "accepting connections", se confirma que PostgreSQL está instalado y ejecutándose correctamente.

Acceder al shell de PostgreSQL (psql)

En este paso, accederemos al shell de PostgreSQL, psql, que es una herramienta de línea de comandos para interactuar con las bases de datos de PostgreSQL. psql te permite ejecutar consultas SQL, gestionar bases de datos y realizar otras tareas administrativas.

De forma predeterminada, PostgreSQL crea un usuario de Unix llamado postgres que corresponde al superusuario de PostgreSQL. Para acceder al shell psql, puedes cambiar al usuario postgres o utilizar sudo para ejecutar comandos como el usuario postgres.

Primero, cambiemos al usuario postgres. Ejecuta el siguiente comando:

sudo -i -u postgres

Este comando cambia el usuario actual a postgres. Notarás que el prompt cambia para reflejar el nuevo usuario.

Ahora que has iniciado sesión como el usuario postgres, puedes acceder al shell psql. Ejecuta el siguiente comando:

psql

Este comando abrirá el shell psql. Deberías ver un prompt que se ve así:

postgres=#

Esto indica que estás conectado al servidor PostgreSQL y ahora puedes ejecutar comandos SQL.

Para salir del shell psql, escribe \q y presiona Enter:

postgres=## \q

Esto te devolverá al shell del usuario postgres.

Para salir del shell del usuario postgres y volver a tu usuario original (labex), escribe exit y presiona Enter:

exit

Alternativamente, puedes acceder al shell psql directamente como el usuario labex utilizando sudo. Esto evita la necesidad de cambiar de usuario.

Ejemplo de ejecución del comando psql

Ejecuta el siguiente comando:

sudo -u postgres psql

Este comando ejecuta el comando psql como el usuario postgres. Te conectarás directamente al shell psql.

Nuevamente, para salir del shell psql, escribe \q y presiona Enter:

postgres=## \q

Esto te devolverá al shell del usuario labex.

En resumen, has aprendido dos formas de acceder al shell psql: cambiando al usuario postgres y utilizando sudo. Ambos métodos logran el mismo resultado, pero usar sudo puede ser más conveniente en algunos casos.

Explorar las bases de datos predeterminadas

En este paso, exploraremos las bases de datos predeterminadas que se crean al instalar PostgreSQL. Estas bases de datos proporcionan funcionalidades esenciales e información sobre el servidor PostgreSQL.

Primero, accede al shell psql como el usuario postgres. Puedes usar el siguiente comando:

sudo -u postgres psql

Una vez que estés en el shell psql, puedes listar las bases de datos disponibles usando el comando \l. Ejecuta el siguiente comando:

postgres=## \l

Este comando mostrará una lista de bases de datos, junto con información sobre sus propietarios, codificaciones y privilegios de acceso. Deberías ver al menos tres bases de datos:

  • postgres: Esta es la base de datos predeterminada a la que te conectas cuando accedes por primera vez al shell psql. A menudo se utiliza para tareas administrativas.
  • template0: Esta base de datos se utiliza como plantilla para crear nuevas bases de datos. No debes modificar esta base de datos.
  • template1: Esta es otra base de datos de plantilla que se utiliza para crear nuevas bases de datos. Es una plantilla estándar y puede personalizarse.

Lista de bases de datos de PostgreSQL disponibles

Para conectarte a una base de datos específica, puedes usar el comando \c seguido del nombre de la base de datos. Por ejemplo, para conectarte a la base de datos postgres, ejecuta el siguiente comando:

postgres=## \c postgres

Deberías ver un mensaje indicando que ahora estás conectado a la base de datos postgres:

You are now connected to database "postgres" as user "postgres".

Ahora que estás conectado a la base de datos postgres, puedes explorar su contenido. Por ejemplo, puedes listar las tablas en la base de datos usando el comando \dt:

postgres=## \dt

Este comando mostrará una lista de tablas en la base de datos actual. Dado que la base de datos postgres se utiliza principalmente para tareas administrativas, es posible que no contenga ninguna tabla definida por el usuario.

También puedes ver información sobre la conexión actual a la base de datos usando el comando \conninfo:

postgres=## \conninfo

Este comando mostrará información como el nombre de la base de datos, el usuario, el host y el puerto.

Para desconectarte de la base de datos actual y volver a la conexión predeterminada, puedes usar el comando \c sin especificar un nombre de base de datos:

postgres=## \c

Esto te volverá a conectar a la base de datos predeterminada, que suele ser la base de datos postgres.

Comando psql conectándose a la base de datos postgres

Finalmente, sal del shell psql escribiendo \q y presionando Enter:

postgres=## \q

Esto te devolverá al shell del usuario labex.

En este paso, has aprendido cómo listar las bases de datos disponibles, conectarte a una base de datos específica y explorar su contenido usando el shell psql.

Comprobar el estado del servidor y la configuración básica

En este paso, comprobaremos el estado del servidor PostgreSQL y exploraremos algunos ajustes de configuración básicos.

Como se mencionó anteriormente, debido a que la máquina virtual de LabEx se ejecuta en un contenedor Docker, es posible que los comandos systemctl no funcionen como se espera. Utilizaremos principalmente pg_isready y psql para comprobar el estado del servidor.

Primero, volvamos a verificar que el servidor PostgreSQL esté en ejecución. Ejecuta el siguiente comando:

pg_isready

Si PostgreSQL está en ejecución, deberías ver la siguiente salida:

/var/run/postgresql:5432 - accepting connections

A continuación, comprobemos algunos ajustes de configuración básicos usando el shell psql. Accede al shell psql como el usuario postgres:

sudo -u postgres psql

Una vez que estés en el shell psql, puedes comprobar la versión de PostgreSQL usando la siguiente consulta SQL:

SELECT version();

Ejecuta esta consulta en el shell psql. Deberías ver una salida similar a:

                                                                version
----------------------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 14.17 (Ubuntu 14.17-0ubuntu0.22.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, 64-bit
(1 row)

Esto muestra la versión de PostgreSQL instalada en el servidor.

También puedes comprobar el usuario actual de la base de datos:

SELECT user;

La salida será:

  user
----------
 postgres
(1 row)

Para comprobar el nombre de la base de datos a la que estás conectado actualmente, usa:

SELECT current_database();

La salida será:

 current_database
------------------
 postgres
(1 row)

Para ver los ajustes de configuración, puedes usar el comando SHOW. Por ejemplo, para comprobar el ajuste listen_addresses, que especifica las direcciones IP en las que el servidor escucha las conexiones, ejecuta el siguiente comando:

SHOW listen_addresses;

La salida probablemente será:

 listen_addresses
--------------------
 localhost
(1 row)

localhost indica que el servidor está escuchando en el host local.

Otro ajuste útil para comprobar es port, que especifica el número de puerto en el que el servidor escucha las conexiones:

SHOW port;

La salida será:

 port
------
 5432
(1 row)

Esto indica que el servidor está escuchando en el puerto 5432, que es el puerto predeterminado de PostgreSQL.

Salida del shell psql de PostgreSQL

Finalmente, sal del shell psql escribiendo \q y presionando Enter:

postgres=## \q

Esto te devolverá al shell del usuario labex.

En este paso, has aprendido cómo comprobar el estado del servidor PostgreSQL y explorar algunos ajustes de configuración básicos usando pg_isready y el shell psql.

Resumen

En este laboratorio, instalamos el RDBMS PostgreSQL en la máquina virtual de LabEx usando apt update y apt install postgresql postgresql-contrib -y. El indicador -y se utilizó para aceptar automáticamente las solicitudes durante la instalación.

Tras la instalación, verificamos que el servicio de PostgreSQL estuviera en ejecución y aceptando conexiones. Debido a que la máquina virtual de LabEx se ejecuta en un contenedor Docker, utilizamos el comando pg_isready en lugar de systemctl status postgresql para comprobar el estado del servidor. La salida esperada de pg_isready cuando el servidor está en ejecución es /var/run/postgresql:5432 - accepting connections.