Cómo instalar y usar PostgreSQL en Ubuntu 20.04

Introducción

Los sistemas de gestión de bases de datos relacionales son un componente clave de muchos sitios web y aplicaciones. Proporcionan una forma estructurada de almacenar, organizar y acceder a la información.

PostgreSQL, o Postgres, es un sistema de gestión de bases de datos relacionales que proporciona una implementación del lenguaje de consulta SQL. Cumple con los estándares y tiene muchas características avanzadas como transacciones confiables y concurrencia sin bloqueos de lectura.

Esta guía muestra cómo instalar Postgres en un servidor Ubuntu 20.04. También proporciona algunas instrucciones para la administración general de la base de datos.

Prerrequisitos

Para seguir este tutorial, necesitarás un servidor Ubuntu 20.04 que se haya configurado siguiendo nuestra guía de Configuración básica de un servidor con Ubuntu 20.04. Después de completar este tutorial de prerrequisitos, tu servidor debe tener un usuario no root con permisos de sudo y un firewall básico.

Paso 1 – Instalación de PostgreSQL

Los repositorios predeterminados de Ubuntu contienen paquetes de Postgres, por lo que puedes instalarlos utilizando el sistema de empaquetado apt.

Si no lo has hecho recientemente, debes actualizar el índice de paquete local de tu servidor:

Luego, debes instalar el paquete Postgres junto con un paquete –contrib que agrega algunas utilidades y funcionalidades adicionales:

Ahora que el software está instalado, podemos repasar cómo funciona y cómo puede ser diferente de otros sistemas de administración de bases de datos relacionales que hayas utilizado.

Paso 2 – Uso de roles y bases de datos PostgreSQL

Por defecto, Postgres usa un concepto llamado “roles” para manejar la autenticación y autorización. Estos son, de alguna manera, similares a las cuentas de estilo Unix normales. Pero, Postgres no distingue entre usuarios y grupos y, en cambio, prefiere el término más flexible “rol”.

Después de la instalación, Postgres está configurado para usar autenticación de identidad, lo que significa que asocia los roles de Postgres con una cuenta de sistema Unix/Linux correspondiente. Si existe un rol dentro de Postgres, un nombre de usuario de Unix/Linux con el mismo nombre puede iniciar sesión como ese rol.

El procedimiento de instalación creaste una cuenta de usuario llamada postgres que está asociada con la función predeterminada de Postgres. Para usar Postgres, puedes iniciar sesión en esa cuenta.

Hay algunas formas de utilizar esta cuenta para acceder a Postgres.

Cambiar a la cuenta de postgres

Debes cambiar a la cuenta de postgres en tu servidor escribiendo:

Ahora puedes acceder al indicador de PostgreSQL inmediatamente escribiendo:

Desde allí, puedes interactuar con el sistema de administración de la base de datos según sea necesario.

Debes salir del indicador de PostgreSQL escribiendo:

Esto te llevará de regreso al indicador postgres de Linux.

Acceder al indicador de Postgres sin cambiar de cuenta

También puedes ejecutar el comando que desees con la cuenta de postgres directamente con sudo.

Por ejemplo, en el último ejemplo, se te indicó que llegaras al indicador de Postgres cambiando primero al usuario de postgres y luego ejecutando psql. Esto para abrir el indicador de Postgres. Puedes hacer esto en un paso ejecutando el comando único psql como el usuario de postgres con sudo, de esta manera:

Esto te registrará directamente en Postgres sin la shell bash en el medio.

Nuevamente, puedes salir de la sesión interactiva de Postgres escribiendo:

Muchos casos de uso requieren más de un rol de Postgres. Debes seguir leyendo para aprender cómo configurarlos.

Paso 3 – Crear un nuevo rol

Actualmente, solo tienes configurado el rol postgres dentro de la base de datos. Puedes crear nuevos roles desde la línea de comandos con el comando createrole. La opción –interactive en el indicador te solicitará el nombre del nuevo rol y también te preguntará si debe tener permisos de superusuario.

Si has iniciado sesión como la cuenta de Postgres, puedes crear un nuevo usuario escribiendo:

Si, en cambio, prefieres usar sudo para cada comando sin cambiar de tu cuenta normal, escribe:

El script te indicará algunas opciones y, según tus respuestas, ejecutará los comandos correctos de Postgres para crear un usuario según tus especificaciones.

Puedes obtener más control pasando algunas opciones adicionales. Echa un vistazo a las opciones observando la página man:

Tu instalación de Postgres ahora tiene un nuevo usuario, pero aún no has agregado ninguna base de datos. La siguiente sección describe este proceso.

Paso 4 – Crear una nueva base de datos

Otra suposición que el sistema de autenticación de Postgres hace de manera predeterminada es que, para cualquier rol utilizado para iniciar sesión, ese rol tendrá una base de datos con el mismo nombre al que puedes acceder.

Esto significa que, si el usuario que creaste en la última sección se llama cesar, ese rol intentará conectarse a una base de datos que también se llama “cesar” de forma predeterminada. Puedes crear la base de datos adecuada con el comando createdb.

Si has iniciado sesión como la cuenta de Postgres, deberías escribir algo como esto:

Si, en cambio, prefieres usar sudo para cada comando sin cambiar de tu cuenta normal, escribe:

Esta flexibilidad proporciona múltiples rutas para crear bases de datos según sea necesario.

Paso 5 – Abrir un indicador de Postgres con el nuevo rol

Para iniciar sesión con autenticación basada en ident, necesitarás un usuario de Linux con el mismo nombre que tu rol y base de datos.

Si no tienes un usuario de Linux coincidente disponible, puedes crear uno con el comando adduser. Deberás hacer esto desde tu cuenta no root con privilegios sudo (es decir, no haber iniciado sesión como usuario de postgres):

Una vez que esta nueva cuenta esté disponible, puedes cambiar y conectarte a la base de datos escribiendo:

O puedes hacer esto en línea:

Este comando iniciará sesión automáticamente, suponiendo que todos los componentes se hayan configurado correctamente.

Si deseas que su usuario se conecte a una base de datos diferente, puedes hacerlo especificando la base de datos de esta manera:

Una vez que hayas iniciado sesión, puedes verificar tu información de conexión actual escribiendo:

Esto es útil si te estás conectando a bases de datos no predeterminadas o con usuarios no predeterminados.

Paso 6 – Creación y eliminación de tablas

Ahora que sabes cómo conectarte al sistema de base de datos PostgreSQL, puedes aprender algunas tareas básicas de administración de Postgres.

La sintaxis básica para crear tablas es la siguiente:

Como puedes ver, estos comandos dan un nombre a la tabla. Luego definen las columnas, así como el tipo de columna y la longitud máxima de los datos del campo. Opcionalmente, también puedes agregar restricciones de tabla para cada columna.

Puede obtener más información sobre cómo crear y administrar tablas en Postgres aquí.

Para fines de demostración, debes crear la siguiente tabla:

Este comando creará una tabla que inventaría el equipo del patio de recreo. La primera columna de la tabla contendrá los números de identificación del equipo del tipo serial, que es un entero de incremento automático. Esta columna también tiene la restricción de lo PRIMARY KEY que significa que los valores dentro de ella deben ser únicos y no nulos.

Las siguientes dos líneas crean columnas para el equipo typecolor, respectivamente, ninguna de las cuales puede estar vacía. La línea después de estos crea una columna location, así como una restricción que requiere que el valor sea uno de los ocho valores posibles. La última línea crea una columna date que registra la fecha en que se instaló el equipo.

Para dos de las columnas  (equip_id y install_date), el comando no especifica una longitud de campo. La razón de esto es que algunos tipos de datos no requieren una longitud establecida porque la longitud o el formato están implícitos.

Puedes ver tu nueva tabla escribiendo:

Tu tabla playground está aquí, pero también hay algo llamado playground_equip_id_seq que es del tipo sequence.

Esta es una representación del tipo serial que le diste a tu columna equip_id. Esto realiza un seguimiento del siguiente número en la secuencia y se crea automáticamente para columnas de este tipo.

Si deseas ver solo la tabla sin la secuencia, puedes escribir:

Con una tabla lista, usémosla para practicar la administración de datos.

Paso 7 – Agregar, consultar y eliminar datos en una tabla

Ahora que tienes una tabla, puedes insertar algunos datos en ella. Como ejemplo, agregaremos un tobogán y un columpio llamando a la tabla a la que deseas agregarlos.  Debes nombrar las columnas y luego proporcionar datos para cada columna, de esta manera:

Debes tener cuidado al ingresar los datos para evitar algunos bloqueos comunes. Por un lado, no ingreses los nombres de columna entre comillas, pero los valores de columna que ingreses necesitan comillas.

Otra cosa a tener en cuenta es que no ingresas un valor para la columna equip_id. Esto se debe a que esto se genera automáticamente cada vez que agregas una nueva fila a la tabla.

Puedes recuperar la información que has agregado escribiendo:

Aquí, puedes ver que equip_id se ha completado con éxito y que todos los demás datos se han organizado correctamente.

Si el tobogán en el patio de recreo se rompe y tienes que quitarlo, también puedes quitar la fila de tu mesa escribiendo:

Puedes consultar la tabla nuevamente:

Observa que la fila slide ya no es parte de la tabla.

Paso 8 – Agregar y eliminar columnas de una tabla

Después de crear una tabla, puedes modificarla agregando o eliminando columnas. Agrega una columna para mostrar la última visita de mantenimiento para cada pieza del equipo escribiendo:

Si vuelves a ver la información de tu tabla, verás que se ha agregado la nueva columna, pero no se han ingresado datos:

Si descubres que tu equipo de trabajo utiliza una herramienta separada para realizar un seguimiento del historial de mantenimiento, puedes eliminar la columna escribiendo:

Esto elimina la columna last_maint y los valores encontrados dentro de ella, pero deja todos los demás datos intactos.

Paso 9 – Actualización de datos en una tabla

Hasta ahora, has aprendido cómo agregar registros a una tabla y cómo eliminarlos, pero este tutorial aún no ha cubierto cómo modificar las entradas existentes.

Puedes actualizar los valores de una entrada existente consultando el registro que deseas y configurando la columna con el valor que deseas usar. Puedes consultar el registro swing (esto coincidirá con cada swing en tu tabla) y cambiar su color a red. Esto podría ser útil si le hiciste un trabajo de pintura al columpio:

Puedes verificar que la operación fue exitosa al consultar los datos nuevamente:

Como puedes ver, el columpio ahora está registrado como rojo.

Conclusión

Ahora haz configurado PostgreSQL en tu servidor Ubuntu 20.04. Si deseas obtener más información sobre Postgres y cómo usarlo, te recomendamos que consultes la siguiente guía: