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. Es compatible con los estándares y tiene muchas características avanzadas como transacciones confiables y concurrencia sin bloqueos de lectura.
Esta guía demuestra cómo instalar Postgres en un servidor Ubuntu 20.04. También proporciona algunas instrucciones para la administración general de bases de datos.
Implementa un clic para una base de datos PostgreSQL utilizando Base de Datos Administradas de DigitalOcean. Permite que DigitalOcean se centre en la escalabilidad, el mantenimiento y las actualizaciones de tu base de datos.
Prerrequisitos
Para seguir este tutorial, necesitarás un servidor Ubuntu 20.04 que haya sido configurado siguiendo nuestra guía de Configuración inicial del servidor para Ubuntu 20.04. Después de completar este tutorial previo, tu servidor debería tener un usuario no root con permisos 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 usando el sistema de empaquetado apt
.
Si no lo has hecho recientemente, actualiza el índice de paquetes local de tu servidor:
Luego, instala el paquete de Postgres junto con un paquete -contrib
que agrega algunas utilidades y funcionalidades adicionales:
Asegúrate de que el servidor esté en ejecución utilizando el comando systemctl start
:
Ahora que el software está instalado y en funcionamiento, podemos revisar cómo funciona y cómo puede ser diferente de otros sistemas de gestión de bases de datos relacionales que hayas usado.
Paso 2 — Uso de Roles y Bases de Datos de PostgreSQL
Por defecto, Postgres utiliza un concepto llamado “roles” para manejar la autenticación y autorización. Estos son, de cierta manera, similares a las cuentas regulares de estilo Unix, pero Postgres no distingue entre usuarios y grupos y en su lugar prefiere el término más flexible “rol”.
Al momento de la instalación, Postgres está configurado para usar la autenticación de pares, lo que significa que asocia roles de Postgres con una cuenta de sistema Unix/Linux que coincida. Si un rol existe en Postgres, un nombre de usuario de Unix/Linux con el mismo nombre puede iniciar sesión como ese rol.
El procedimiento de instalación creó una cuenta de usuario llamada postgres que está asociada con el rol predeterminado de Postgres. Para usar Postgres, puedes iniciar sesión en esa cuenta.
Hay algunas formas de utilizar esta cuenta para acceder a Postgres.
Cambiarse a la cuenta postgres
Cambie a la cuenta postgres en su servidor escribiendo:
Ahora puede acceder inmediatamente al indicador de PostgreSQL escribiendo:
A partir de ahí, puede interactuar con el sistema de gestión de base de datos según sea necesario.
Salga del indicador de PostgreSQL escribiendo:
Esto lo devolverá al indicador de comando de Linux postgres
.
Acceder a un Prompt de Postgres sin Cambiar de Cuentas
También puedes ejecutar el comando que desees con la cuenta postgres directamente usando sudo
.
Por ejemplo, en el último ejemplo, se te instruyó a llegar al prompt de Postgres primero cambiando al usuario postgres y luego ejecutando psql
para abrir el prompt de Postgres. Podrías hacer esto en un solo paso ejecutando el comando único psql
como el usuario postgres con sudo
, de esta manera:
Esto te conectará directamente a Postgres sin el intermediario de la cáscara de bash
en medio.
Nuevamente, puedes salir de la sesión interactiva de Postgres escribiendo:
Muchos casos de uso requieren más de un rol de Postgres. Continúa leyendo para aprender cómo configurar estos.
Paso 3 — Crear un Nuevo Rol
Actualmente, solo tienes el rol postgres configurado dentro de la base de datos. Puedes crear nuevos roles desde la línea de comandos con el comando createrole
. La bandera --interactive
te pedirá el nombre del nuevo rol y también preguntará si debe tener permisos de superusuario.
Si has iniciado sesión como la cuenta postgres, puedes crear un nuevo usuario escribiendo:
Si, en cambio, prefieres usar sudo
para cada comando sin cambiar desde tu cuenta normal, escribe:
El script te pedirá algunas opciones y, según tus respuestas, ejecutará los comandos correctos de Postgres para crear un usuario según tus especificaciones.
OutputEnter name of role to add: sammy
Shall the new role be a superuser? (y/n) y
Puedes obtener más control pasando algunas banderas adicionales. Consulta las opciones echando un vistazo a 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 hace el sistema de autenticación de Postgres de forma predeterminada es que para cualquier rol utilizado para iniciar sesión, ese rol tendrá una base de datos con el mismo nombre al cual puede acceder.
Esto significa que si el usuario que creaste en la última sección se llama sammy, ese rol intentará conectarse a una base de datos que también se llama “sammy” por defecto. Puedes crear la base de datos apropiada con el comando createdb
.
Si estás conectado como la cuenta postgres, escribirías algo como:
Si, en cambio, prefieres usar sudo
para cada comando sin cambiar de tu cuenta normal, escribirías:
Esta flexibilidad proporciona múltiples formas de crear bases de datos según sea necesario.
Paso 5 — Abriendo un Prompt de Postgres con el Nuevo Rol
Para iniciar sesión con autenticación peer, necesitarás un usuario de Linux con el mismo nombre que tu rol y base de datos de Postgres.
Si no tienes un usuario de Linux correspondiente disponible, puedes crear uno con el comando adduser
. Tendrás que hacer esto desde tu cuenta no root con privilegios de sudo
(es decir, no conectado como el usuario postgres):
Una vez que esta nueva cuenta esté disponible, puedes cambiar y conectarte a la base de datos escribiendo:
O, puedes hacerlo en línea:
Este comando te iniciará sesión automáticamente, asumiendo que todos los componentes se han configurado correctamente.
Si desea que su usuario se conecte a una base de datos diferente, puede hacerlo especificando la base de datos de esta manera:
Una vez iniciada la sesión, puede verificar su información de conexión actual escribiendo:
OutputYou are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".
Esto es útil si se está conectando a bases de datos no predeterminadas o con usuarios no predeterminados.
Paso 6 — Crear y Eliminar Tablas
Ahora que sabe cómo conectarse al sistema de base de datos PostgreSQL, puede aprender algunas tareas básicas de administración de Postgres.
La sintaxis básica para crear tablas es la siguiente:
CREATE TABLE table_name (
column_name1 col_type (field_length) column_constraints,
column_name2 col_type (field_length),
column_name3 col_type (field_length)
);
Como puede ver, estos comandos dan a la tabla un nombre y luego definen las columnas, así como el tipo de columna y la longitud máxima de los datos del campo. También puede agregar opcionalmente 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, cree la siguiente tabla:
Este comando creará una tabla que inventariza equipos de juegos. La primera columna en la tabla contendrá números de identificación de equipos del tipo serial
, que es un entero de autoincremento. Esta columna también tiene la restricción de PRIMARY KEY
, lo que significa que los valores dentro de ella deben ser únicos y no nulos.
Las siguientes dos líneas crean columnas para el tipo
y el color
del equipo respectivamente, ninguno de los cuales puede estar vacío. La línea después de éstas crea una columna ubicación
así como una restricción que requiere que el valor sea uno de ocho valores posibles. La última línea crea una columna fecha
que registra la fecha en la 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 se sobreentienden.
Puedes ver tu nueva tabla escribiendo:
Output List of relations
Schema | Name | Type | Owner
--------+-------------------------+----------+-------
public | playground | table | sammy
public | playground_equip_id_seq | sequence | sammy
(2 rows)
Aquí está tu tabla de juegos, pero también hay algo llamado playground_equip_id_seq
que es del tipo sequence
. Esto es una representación del tipo serial
que diste a tu columna equip_id
. Esto lleva un seguimiento del próximo número en la secuencia y se crea automáticamente para columnas de este tipo.
Si quieres ver solo la tabla sin la secuencia, puedes escribir:
Output List of relations
Schema | Name | Type | Owner
--------+------------+-------+-------
public | playground | table | sammy
(1 row)
Con una tabla lista, vamos a usarla para practicar el manejo 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, agrega un tobogán y un columpio llamando a la tabla a la que deseas agregar, nombrando las columnas y luego proporcionando datos para cada columna, así:
Debes tener cuidado al ingresar los datos para evitar algunos problemas comunes. Por un lado, no envuelvas los nombres de las columnas entre comillas, pero los valores de columna que ingreses sí necesitan comillas.
Otra cosa a tener en cuenta es que no debes ingresar un valor para la columna equip_id
. Esto se debe a que se genera automáticamente cada vez que agregas una nueva fila a la tabla.
Recupera la información que has agregado escribiendo:
Output equip_id | type | color | location | install_date
----------+-------+--------+-----------+--------------
1 | slide | blue | south | 2017-04-28
2 | swing | yellow | northwest | 2018-08-16
(2 rows)
Aquí puedes ver que tu equip_id
se ha completado correctamente y que todos tus otros datos se han organizado correctamente.
Si el tobogán del patio de recreo se rompe y tienes que quitarlo, también puedes eliminar la fila de tu tabla escribiendo:
Consulta la tabla nuevamente:
Output equip_id | type | color | location | install_date
----------+-------+--------+-----------+--------------
2 | swing | yellow | northwest | 2018-08-16
(1 row)
Observa que la fila de slide
ya no forma 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 equipo escribiendo:
Si vuelves a ver la información de tu tabla, verás que se ha añadido la nueva columna pero no se ha ingresado ningún dato:
Output equip_id | type | color | location | install_date | last_maint
----------+-------+--------+-----------+--------------+------------
2 | swing | yellow | northwest | 2018-08-16 |
(1 row)
Si descubres que tu equipo de trabajo utiliza una herramienta separada para llevar el historial de mantenimiento, puedes eliminar la columna escribiendo:
Esto eliminará la columna last_maint
y cualquier valor que se encuentre dentro de ella, pero dejará intactos todos los demás datos.
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 entradas existentes.
Puedes actualizar los valores de una entrada existente consultando el registro que deseas y estableciendo la columna con el valor que deseas utilizar. Puedes consultar el registro swing
(esto coincidirá con todos los columpios en tu tabla) y cambiar su color a rojo
. Esto podría ser útil si le diste al conjunto de columpios una capa de pintura:
Puedes verificar que la operación fue exitosa consultando los datos nuevamente:
Output equip_id | type | color | location | install_date
----------+-------+-------+-----------+--------------
2 | swing | red | northwest | 2018-08-16
(1 row)
Como puedes ver, ahora el tobogán está registrado como siendo rojo.
Conclusión
Ahora estás configurado con PostgreSQL en tu servidor Ubuntu 20.04. Si deseas aprender más sobre Postgres y cómo usarlo, te animamos a consultar las siguientes guías:
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-20-04