Cómo instalar y utilizar PostgreSQL en CentOS 8

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Instalación de PostgreSQL
  • Paso 2: creación de un nuevo clúster de base de datos PostgreSQL
  • Paso 3: Uso de roles y bases de datos de PostgreSQL
    1. Cambiar a la cuenta de postgres
    2. Cómo acceder a un indicador de Postgres sin cambiar de cuenta
  • Paso 4: creación de un nuevo rol
  • Paso 5: Creación de una nueva base de datos
  • Paso 6: Apertura de un mensaje de Postgres con el nuevo rol
  • Paso 7: creación y eliminación de tablas
  • Paso 8: agregar, consultar y eliminar datos en una tabla
  • Paso 9: Agregar y eliminar columnas de una tabla
  • Paso 10: Actualizar datos en una tabla
  • Conclusión
  • Los sistemas de gestión de bases de datos relacionales son un componente clave de muchos sitios web y aplicaciones. Ofrecen una forma estructurada de almacenar, organizar y acceder a la información.

    PostgreSQL, también conocido como Postgres, es un sistema de gestión de bases de datos relacionales que proporciona una implementación del lenguaje de consulta estructurado, más conocido como SQL. Lo utilizan muchos proyectos populares, tanto grandes como pequeños, cumple con los estándares y tiene muchas funciones avanzadas, como transacciones confiables y concurrencia sin bloqueos de lectura.

    Si sigue esta guía, instalará la última versión de PostgreSQL en un servidor CentOS 8.

    Prerrequisitos

    Para completar este tutorial, necesitará un servidor que ejecute CentOS 8. Este servidor debe tener un usuario no root con privilegios administrativos y un firewall configurado con firewalld. Para configurarlo, consulte nuestra guía de configuración inicial del servidor para CentOS 8.

    Paso 1: Instalación de PostgreSQL

    PostgreSQL está disponible en el repositorio de software AppStream predeterminado de CentOS 8 y existen varias versiones que puedes instalar. Puedes elegir entre estas versiones habilitando la colección adecuada de paquetes y dependencias que se alineen con la versión que deseas instalar; cada colección se denomina flujo de módulo.

    En DNF, el administrador de paquetes predeterminado de CentOS 8, los módulos son colecciones especiales de paquetes RPM que juntos forman una aplicación más grande. Esto tiene como objetivo hacer que la instalación de paquetes y sus dependencias sea más intuitiva para los usuarios.

    Enumere las transmisiones disponibles para el postgresqlmódulo utilizando el dnfcomando:

    1. dnf module list postgresql
    Outputpostgresql                           9.6                             client, server [d]                          PostgreSQL server and client module                         postgresql                           10 [d]                          client, server [d]                          PostgreSQL server and client module                         postgresql                           12                              client, server                              PostgreSQL server and client module

    En este resultado, puede ver que hay tres versiones de PostgreSQL disponibles en el repositorio de AppStream9.6 : , 10y 12. El flujo que proporciona la versión 10 de Postgres es el predeterminado, como se indica en el [d]siguiente it. Si desea instalar esa versión, puede simplemente ejecutar sudo dnf install postgresql-servery continuar con el siguiente paso. Sin embargo, aunque la versión 10 aún se mantiene, este tutorial instalará la versión 12 de Postgres, la última versión al momento de escribir este artículo.

    Para instalar la versión 12 de PostgreSQL, debe habilitar el flujo de módulos de esa versión. Cuando habilita un flujo de módulos, anula el flujo predeterminado y hace que todos los paquetes relacionados con el flujo habilitado estén disponibles en el sistema. Tenga en cuenta que solo se puede habilitar un flujo de un módulo determinado en un sistema al mismo tiempo.

    Para habilitar la transmisión del módulo para la versión 12 de Postgres, ejecute el siguiente comando:

    1. sudo dnf module enable postgresql:12

    Cuando se le solicite, presione yy luego ENTERpara confirmar que desea habilitar la transmisión:

    Output==================================================================== Package        Architecture  Version          Repository      Size====================================================================Enabling module streams: postgresql                   12                                   Transaction Summary====================================================================Is this ok [y/N]: y

    Después de habilitar el flujo del módulo de la versión 12, puede instalar el postgresql-serverpaquete para instalar PostgreSQL 12 y todas sus dependencias:

    1. sudo dnf install postgresql-server

    Cuando se le solicite, confirme la instalación presionando yy luego ENTER:

    Output. . .Install  4 PackagesTotal download size: 16 MInstalled size: 62 MIs this ok [y/N]: y

    Ahora que el software está instalado, realizará algunos pasos de inicialización para preparar un nuevo clúster de base de datos para PostgreSQL.

    Paso 2: creación de un nuevo clúster de base de datos PostgreSQL

    Debe crear un nuevo clúster de base de datos PostgreSQL antes de poder comenzar a crear tablas y cargarlas con datos. Un clúster de base de datos es una colección de bases de datos administradas por una única instancia de servidor. La creación de un clúster de base de datos consiste en crear los directorios en los que se colocarán los datos de la base de datos, generar las tablas de catálogo compartidas y crear las bases de datos template1y postgres.

    La template1base de datos es una especie de plantilla que se utiliza para crear nuevas bases de datos; todo lo que se almacena en template1, incluso los objetos que usted mismo agrega, se colocarán en nuevas bases de datos cuando se creen. La postgresbase de datos es una base de datos predeterminada diseñada para que la utilicen los usuarios, las utilidades y las aplicaciones de terceros.

    El paquete Postgres que instalamos en el paso anterior incluye un script útil llamado postgresql-setupque ayuda con la administración de clústeres de bases de datos de bajo nivel. Para crear un clúster de bases de datos, ejecute el script usando sudoy con la --initdbopción:

    1. sudo postgresql-setup --initdb

    Verá el siguiente resultado:

    Output * Initializing database in '/var/lib/pgsql/data' * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log

    Ahora inicie el servicio PostgreSQL usando systemctl:

    1. sudo systemctl start postgresql

    Luego, use systemctluna vez más para permitir que el servicio se inicie cada vez que se inicie el servidor:

    1. sudo systemctl enable postgresql

    Esto dará el siguiente resultado

    OutputCreated symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /usr/lib/systemd/system/postgresql.service.

    Ahora que PostgreSQL está en funcionamiento, repasaremos el uso de roles para aprender cómo funciona Postgres y en qué se diferencia de sistemas de administración de bases de datos similares que pueda haber utilizado en el pasado.

    Paso 3: Uso de roles y bases de datos de PostgreSQL

    PostgreSQL utiliza un concepto denominado roles para gestionar la autenticación y autorización de clientes. En algunos aspectos, son similares a las cuentas comunes de estilo Unix, pero Postgres no distingue entre usuarios y grupos y, en su lugar, prefiere el término rol, que es más flexible.

    Tras la instalación, Postgres se configura para utilizar la 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 Unix/Linux con el mismo nombre puede iniciar sesión como ese rol.

    El procedimiento de instalación creó una cuenta de usuario denominada postgres que está asociada con el postgresrol predeterminado. Para utilizar PostgreSQL, puede iniciar sesión en esa cuenta.

    Hay algunas formas de utilizar esta cuenta para acceder al indicador de PostgreSQL.

    Cambiar a la cuenta de postgres

    Cambie a la cuenta postgres en su servidor escribiendo:

    1. sudo -i -u postgres

    Ahora puede acceder a un indicador de Postgres inmediatamente escribiendo:

    1. psql

    Esto le permitirá iniciar sesión en el indicador de PostgreSQL y desde aquí podrá interactuar con el sistema de administración de base de datos de inmediato.

    Salga del indicador de PostgreSQL escribiendo:

    1. q

    Esto lo llevará de regreso al símbolo del sistema de Linux de la cuenta de postgres . Ahora regrese a su cuenta original con lo siguiente:

    1. exit

    Cómo acceder a un indicador de Postgres sin cambiar de cuenta

    También puedes ejecutar comandos con la cuenta postgres directamente usando sudo.

    Por ejemplo, en el ejemplo anterior, se le indicó que accediera al indicador de Postgres cambiando primero al usuario postgres y luego ejecutando psqlpara abrir el indicador de Postgres. Como alternativa, podría hacer esto en un solo paso ejecutando el comando único psqlcomo usuario postgres con sudo, de esta manera:

    1. sudo -u postgres psql

    Esto le permitirá iniciar sesión directamente en Postgres sin el bashshell intermediario.

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

    1. q

    En este paso, utilizó la cuenta de Postgres para acceder al psqlindicador. Sin embargo, muchos casos de uso requieren más de un rol de Postgres. Siga leyendo para aprender a configurar nuevos roles.

    Paso 4: creación de un nuevo rol

    Actualmente, solo tiene configurado el rol postgres dentro de la base de datos. Puede crear nuevos roles desde la línea de comandos con el createrolecomando. La --interactivebandera le solicitará el nombre del nuevo rol y también le preguntará si debe tener permisos de superusuario.

    Si ha iniciado sesión con la cuenta de postgres , puede crear un nuevo usuario escribiendo:

    1. createuser --interactive

    Si, en cambio, prefieres utilizar sudopara cada comando sin cambiar de cuenta normal, escribe:

    1. sudo -u postgres createuser --interactive

    El script le ofrecerá algunas opciones y, en función de sus respuestas, ejecutará los comandos Postgres necesarios para crear un usuario según sus especificaciones. Para este tutorial, cree un rol llamado sammy y otórguele privilegios de superusuario ingresando lo siguiente ycuando se le solicite:

    OutputEnter name of role to add: sammyShall the new role be a superuser? (y/n) y

    Puedes obtener más control si pasas algunas banderas adicionales. Consulta las opciones en la manpágina createuser:

    1. man createuser

    Su instalación de Postgres ahora tiene una nueva función, pero aún no ha agregado ninguna base de datos. La siguiente sección describe este proceso.

    Paso 5: Creación de una nueva base de datos

    Otra suposición que el sistema de autenticación de Postgres hace de forma predeterminada es que para cualquier rol utilizado para iniciar sesión, ese rol tendrá una base de datos con el mismo nombre a la que 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 sammyde manera predeterminada. Puedes crear una base de datos de este tipo con el createdbcomando.

    Si ha iniciado sesión como cuenta de postgres , deberá escribir algo como:

    1. createdb sammy

    Si, en cambio, prefieres usar sudofor each command sin cambiar de tu cuenta normal, deberás escribir:

    1. sudo -u postgres createdb sammy

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

    Ahora que ha creado una nueva base de datos, iniciará sesión en ella con su nuevo rol.

    Paso 6: Apertura de un mensaje de Postgres con el nuevo rol

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

    Si no tienes un usuario Linux disponible, puedes crear uno con el addusercomando. Tendrás que hacerlo desde una cuenta que no sea rootsudo y que tenga privilegios (es decir, que no hayas iniciado sesión como usuario de postgres ):

    1. sudo adduser sammy

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

    1. sudo -i -u sammy
    2. psql

    O puedes hacer esto en línea:

    1. sudo -u sammy psql

    Este comando le permitirá iniciar sesión automáticamente.

    Si desea que su usuario se conecte a una base de datos diferente, puede hacerlo incluyendo la -dbandera y especificando la base de datos, de esta manera:

    1. psql -d postgres

    Una vez que haya iniciado sesión, puede verificar su información de conexión actual escribiendo:

    1. conninfo

    Esto mostrará el siguiente resultado:

    OutputYou are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".

    Esto es útil si se conecta a bases de datos no predeterminadas o con usuarios no predeterminados.

    Una vez conectado a su base de datos, ahora puede intentar crear y eliminar tablas.

    Paso 7: creación y eliminación de 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.

    Primero, crea una tabla para almacenar algunos datos. Por ejemplo, crearás una tabla que describa algunos equipos de juegos.

    La sintaxis básica de este comando 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));

    Estos comandos le dan un nombre a la tabla 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 restricciones de tabla para cada columna de manera opcional.

    Para fines de demostración, cree una tabla simple como esta:

    1. CREATE TABLE playground (
    2. equip_id serial PRIMARY KEY,
    3. type varchar (50) NOT NULL,
    4. color varchar (25) NOT NULL,
    5. location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
    6. install_date date
    7. );

    Este comando creará una tabla que incluye el inventario de los equipos de juegos. Comienza con un ID de equipo, que es del serialtipo. Este tipo de datos es un entero de incremento automático. También le ha dado a esta columna la restricción de PRIMARY KEY, lo que significa que los valores deben ser únicos y no nulos.

    Para dos de las columnas ( equip_idy install_date), el comando no especifica una longitud de campo. Esto se debe a que algunos tipos de columnas no requieren una longitud definida porque la longitud está implícita en el tipo.

    Las dos líneas siguientes crean columnas para el equipo typey colorrespectivamente, cada una de las cuales no puede estar vacía. La línea después de estas crea una locationcolumna y una restricción que requiere que el valor sea uno de ocho valores posibles. La última línea crea una columna de fecha que registra la fecha en la que instaló el equipo.

    Puedes ver tu nueva tabla escribiendo:

    1. d

    Esto mostrará el siguiente resultado:

    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_seqque es del tipo sequence. Esta es una representación del serialtipo que le diste a tu equip_idcolumna. Esto hace un seguimiento del siguiente número en la secuencia y se crea automáticamente para columnas de este tipo.

    Si desea ver solo la tabla sin la secuencia, puede escribir:

    1. dt

    Esto producirá lo siguiente:

    Output          List of relations Schema |    Name    | Type  | Owner --------+------------+-------+------- public | playground | table | sammy(1 row)

    En este paso, creó una tabla de muestra. En el siguiente paso, intentará agregar, consultar y eliminar entradas en esa tabla.

    Paso 8: agregar, consultar y eliminar datos en una tabla

    Ahora que tienes una tabla, puedes insertar algunos datos en ella.

    A modo de ejemplo, agregue una diapositiva y un columpio llamando a la tabla que desea agregar, nombrando las columnas y luego proporcionando datos para cada columna, de la siguiente manera:

    1. INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2017-04-28');
    2. INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2018-08-16');

    Debe tener cuidado al ingresar los datos para evitar algunos errores comunes. Por un lado, no coloque los nombres de las columnas entre comillas, pero los valores de las columnas que ingrese sí deben estar entre comillas.

    Otra cosa que hay que tener en cuenta es que no se debe introducir un valor para la equip_idcolumna, ya que este se genera automáticamente cada vez que se crea una nueva fila en la tabla.

    Recupere la información que ha agregado escribiendo:

    1. SELECT * FROM playground;

    Verá el siguiente resultado:

    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_idformulario se ha completado correctamente y que todos los demás datos se han organizado correctamente.

    Si el tobogán del patio de juegos se rompe y tienes que quitarlo, también puedes eliminar la fila de tu mesa escribiendo:

    1. DELETE FROM playground WHERE type = 'slide';

    Consulta la tabla nuevamente:

    1. SELECT * FROM playground;

    Verás lo siguiente:

    Output equip_id | type  | color  | location  | install_date ----------+-------+--------+-----------+--------------        2 | swing | yellow | northwest | 2018-08-16(1 row)

    Tenga en cuenta que su diapositiva ya no es parte de la tabla.

    Ahora que ha agregado y eliminado entradas en su tabla, puede intentar agregar y eliminar columnas.

    Paso 9: Agregar y eliminar columnas de una tabla

    Después de crear una tabla, puede modificarla para agregar o quitar columnas. Agregue una columna para mostrar la última visita de mantenimiento de cada equipo escribiendo lo siguiente:

    1. ALTER TABLE playground ADD last_maint date;

    Si vuelve a ver la información de su tabla, verá que se agregó la nueva columna (pero no se ingresaron datos):

    1. SELECT * FROM playground;

    Verás lo siguiente:

    Output equip_id | type  | color  | location  | install_date | last_maint ----------+-------+--------+-----------+--------------+------------        2 | swing | yellow | northwest | 2018-08-16   | (1 row)

    Eliminar una columna es igual de sencillo. Si descubre que su equipo de trabajo utiliza una herramienta independiente para realizar un seguimiento del historial de mantenimiento, puede eliminar la columna escribiendo lo siguiente:

    1. ALTER TABLE playground DROP last_maint;

    Esto elimina la last_maintcolumna y todos los valores que se encuentran en ella, pero deja todos los demás datos intactos.

    Ahora que ha agregado y eliminado columnas, puede intentar actualizar los datos existentes en el paso final.

    Paso 10: Actualizar datos en una tabla

    Hasta ahora, ha 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.

    Puede actualizar los valores de una entrada existente consultando el registro que desea y configurando la columna con el valor que desea utilizar. Puede consultar el swingregistro (esto coincidirá con cada swing de su tabla) y cambiar su color a red:

    1. UPDATE playground SET color = 'red' WHERE type = 'swing';

    Puede verificar que la operación fue exitosa consultando los datos nuevamente:

    1. SELECT * FROM playground;

    Verás lo siguiente:

    Output equip_id | type  | color | location  | install_date ----------+-------+-------+-----------+--------------        2 | swing | red   | northwest | 2010-08-16(1 row)

    Como puedes ver, tu diapositiva ahora está registrada como red.

    Conclusión

    Ya tiene instalado PostgreSQL en su servidor CentOS 8. Sin embargo, todavía queda mucho por aprender sobre Postgres. Aquí encontrará más guías que explican cómo utilizar Postgres:

    • Una comparación de los sistemas de gestión de bases de datos relacionales
    • Obtenga información sobre cómo ejecutar consultas en PostgreSQL
    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion