One place for hosting & domains

      PostgreSQL

      Установка PostgreSQL в Ubuntu 20.04 [Краткое руководство]


      Введение

      PostgreSQL, или Postgres, — это система управления реляционными базами данных, которая представляет собой реализацию языка запросов SQL. Она соответствует стандартам и обладает множеством передовых функций, таких как надежность и параллельность операций без блокировки при чтении.

      В этом обучающем руководстве мы рассмотрим, как установить Postgres на сервер Ubuntu 20.04.

      Предварительные требования

      Для выполнения данного руководства вам потребуется один сервер Ubuntu 20.04 с конфигурацией, выполненной согласно руководству по первоначальной настройке сервера Ubuntu 20.04. После выполнения всех предварительных действий ваш сервер должен иметь пользователя без прав root с разрешениями sudo и базовый брандмауэр.

      Шаг 1 — Установка PostgreSQL

      Для установки PostgreSQL в первую очередь обновите локальный индекс пакетов вашего сервера:

      После этого установите пакет Postgres вместе с пакетом -contrib, который содержит дополнительные утилиты и функциональные возможности:

      • sudo apt install postgresql postgresql-contrib

      Шаг 2 — Использование ролей и баз данных в PostgreSQL

      По умолчанию Postgres использует концепцию «ролей» для выполнения аутентификации и авторизации. В некоторых аспектах они аналогичны обычным пользователям и группам в Unix.

      После установки Postgres настроена на использование аутентификации ident, что значит, что выполняется привязка ролей Postgres с соответствующей системной учетной записью Unix/Linux. Если роль существует внутри Postgres, пользователь Unix/Linux с тем же именем может выполнить вход в качестве этой роли.

      В ходе установки была создана учетную запись пользователя postgres, которая связана с используемой по умолчанию ролью postgres. Существует несколько способов использования этой учетной записи для доступа к Postgres. Один из способов — переход к учетной записи postgres на вашем сервере с помощью следующей команды:

      Затем вы можете получить доступ к командной строке Postgres с помощью команды:

      В результате вы можете получить доступ к командной строке PostgreSQL, а уже отсюда свободно взаимодействовать с системой управления базами данных.

      Для выхода из командной строки PostgreSQL выполните следующую команду:

      В результате вы вернетесь в командную строку postgres в Linux.

      Также вы можете запустить необходимую вам команду с учетной записью postgres напрямую с помощью sudo:

      Это позволит выполнить вход в Postgres без необходимости использования промежуточной командной строки bash.

      Вы снова сможете выйти из интерактивного сеанса Postgres с помощью следующей команды:

      Шаг 3 — Создание новой роли

      Если вы выполнили вход в учетную запись postgres, то можете создать новую роль с помощью следующей команды:

      Если же вы предпочитаете использовать sudo для каждой команды без переключения с обычной учетной записи, введите следующую команду:

      • sudo -u postgres createuser --interactive

      В любом случае скрипт будет предлагать варианты на выбор и, исходя из ваших ответов, выполнять нужные команды Postgres для создания пользователя в соответствии с вашими спецификациями.

      Output

      Enter name of role to add: sammy Shall the new role be a superuser? (y/n) y

      Шаг 4 — Создание новой базы данных

      Еще одно предположение, которое система аутентификации Postgres использует по умолчанию, состоит в том, что для любой роли, используемой для входа, существует база данных с тем же именем, к которой роль может получить доступ.

      Это означает, что если созданный вами в последнем разделе пользователь будет иметь имя sammy, эта роль попытается подключиться к базе данных, которая также называется «sammy» по умолчанию. Вы можете создать соответствующую базу данных с помощью команды createdb.

      Если вы используете учетную запись postgres, необходимо ввести следующее:

      Если же вы предпочитаете использовать sudo для каждой команды без переключения с обычной учетной записи, введите следующую команду:

      • sudo -u postgres createdb sammy

      Шаг 5 — Открытие командной строки Postgres с новой ролью

      Чтобы выполнить аутентификацию с помощью ident, вам потребуется пользователь Linux с тем же именем, что и имя роли и базы данных в Postgres.

      Если у вас нет соответствующего пользователя Linux, то вы можете создать его с помощью команды adduser. Вы должны воспользоваться учетной записи без прав root с привилегиями sudo (т.е. не выполняя вход в качестве пользователя postgres):

      Когда новая учетная запись будет доступна, вы можете переключиться и подключиться к базе данных следующим образом:

      Либо же вы можете сделать следующее:

      Эта команда позволит выполнить вход автоматически, полагая, что все компоненты были настроены должным образом.

      Если вы хотите, чтобы ваш пользователь подключился к другой базе данных, то вы можете сделать это с помощью следующей команды:

      После входа вы можете проверить данные о текущем подключении:

      Output

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

      Заключение

      Вы настроили PostgreSQL на сервере Ubuntu 20.04. Если вы хотите узнать больше о системе Postgres и способах ее использования, мы рекомендуем вам изучить следующие руководства:



      Source link

      Cómo instalar y usar PostgreSQL en CentOS 8


      Introducción

      Los sistemas de administración de bases de datos relacionales son un componente clave de una gran cantidad de aplicaciones y sitios web. Proporcionan una alternativa estructurada para almacenar la información, organizarla y acceder a ella.

      PostgreSQL, también conocido como Postgres, es un sistema de administración de bases de datos relacionales que proporciona una implementación del Structured Query Language, más conocido como SQL. Se utiliza en muchos proyectos populares, grandes y pequeños, cumple con los estándares y tiene muchas funciones avanzadas, como transacciones fiables y concurrencias sin bloqueos de lectura.

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

      Requisitos previos

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

      Paso 1: Instalar PostgreSQL

      PostgreSQL está disponible en el repositorio predeterminado de software AppStream de CentOS 8 y hay varias versiones que puede instalar. Puede elegir entre estas versiones habilitando la colección adecuada de paquetes y dependencias que se ajusten a la versión que desee instalar, y cada colección se denomina module stream.

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

      Enumere los flujos disponibles del módulo postgresql usando el comando dnf:

      • dnf module list postgresql

      Output

      postgresql 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

      Puede ver en este resultado que hay tres versiones de PostgreSQL disponibles desde el repositorio AppStream: 9.6, 10 y 12. El flujo que proporciona la versión 10 de Postgres es el predeterminado, como se indica mediante la [d] que la sigue. Si desea instalar esa versión, podría ejecutar sudo dnf install postgresql-server y proceder con el siguiente paso. Sin embargo, aunque la versión 10 todavía se mantiene, este tutorial instalará la versión 12, la última versión en el momento en que se redactó este artículo.

      Para instalar la versión 12 de PostgreSQL, debe habilitar el flujo de módulo de esa versión. Cuando habilite un flujo de módulos, anule el flujo predeterminado y haga que todos los paquetes relacionados con el flujo habilitado estén disponibles en el sistema. Observe que solo puede habilitarse un flujo de cualquier módulo concreto que pueda habilitarse en un sistema al mismo tiempo.

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

      • sudo dnf module enable postgresql:12

      Cuando se le solicite, pulse y y luego INTRO para confirmar que desea habilitar el flujo:

      Output

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

      Tras habilitar el flujo de módulo de la versión 12, puede instalar el paquete postgresql-server para instalar PostgresSQL 12 y todas sus dependencias:

      • sudo dnf install postgresql-server

      Cuando se le indique, confirme la instalación pulsando y y luego INTRO:

      Output

      . . . Install 4 Packages Total download size: 16 M Installed size: 62 M Is 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: Crear un nuevo clúster de base de datos para PostgreSQL

      Debe crear un nuevo clúster de base de datos para PostgreSQL database cluster antes de 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 instanacia de servidor. Crear un clúster de base de datos consiste en crear los directorios en los cuales se dispondrán los datos de la base de datos, generar las tablas de catálogo compartido y crear las bases de datos template1 y postgres.

      La base de datos template1 es una plantilla usada para crear nuevas bases de datos; todo lo que se almacene en template1, incluso los objetos que añada, se colocarán en las nuevas bases de datos cuando se creen. La base de datos postgres es una base de datos predeterminada diseñada para que la empleen usuarios, utilidades y aplicaciones externas.

      El paquete Postgres que instalamos en el paso anterior cuenta con una secuencia de comandos llamada postgresql-setup que ayuda con la administración de clúster de base de datos de nivel bajo. Para crear un clúster de la base de datos, ejecute la secuencia de comandos usando sudo y con la opción --initdb:

      • sudo postgresql-setup --initdb

      Verá lo siguiente:

      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:

      • sudo systemctl start postgresql

      A continuación, utilice systemctl una vez más para permitir que el servicio se inicie cada vez que se inicie el servidor:

      • sudo systemctl enable postgresql

      Esto generará el siguiente resultado:

      Output

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

      Ahora que PostgreSQL está activo y en ejecución, continuaremos usando roles para aprender cómo funciona Postgres y cómo es diferente de los sistemas de gestión de base de datos similares que pueda haber usados en el pasado.

      Paso 3: Usar roles y bases de datos de PostgreSQL

      PostgreSQL utiliza un concepto llamado roles para gestionar la autenticación y la autorización de los clientes. Estos son, en algunos aspectos, parecidos a las cuentas normales de estilo Unix, pero Postgres no distingue entre los usuarios y los grupos, y en su lugar prefiere el término más flexible de “rol”.

      Tras la instalación, Postgres se configura para usar la autenticación ident. Esto significa que asocia los roles de Postgres con una cuenta de sistema Unix o Linux correspondiente. Si existe un rol dentro de Postgres, un nombre de usuario de Unix o Linux con el mismo nombre puede iniciar sesión ocupando ese rol.

      El procedimiento de instalación creó una cuenta de usuario llamada postgres, que se asocia con el rol predeterminado de Postgres. Para usar PostgresSQL, puede iniciar sesión en esa cuenta.

      Existen varias formas de usar esta cuenta para acceder a la solicitud de PostgresSQL.

      Cambiar a la cuenta de postgres

      Cambie a la cuenta de postgres en su servidor escribiendo lo siguiente:

      Ahora podrá acceder de inmediato a una linea de comandos de Postgres escribiendo lo siguiente:

      Esto le permitirá acceder a la línea de comandos de PostgreSQL y desde esta podrá interactuar de inmediato con el sistema de administración de bases de datos.

      Salga de la línea de comandos de PostgreSQL escribiendo lo siguiente:

      Con esto regresará a la línea de comandos de Linux de la cuenta postgres. Ahora, vuelva a su cuenta original con lo siguiente:

      Acceder a una línea de comandos de Postgres sin cambiar de cuenta

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

      Por ejemplo, en el ejemplo anterior se le indicó acceder a la línea de comandos de Postgres pasando primero al usuario de postgres y luego ejecutando psql para abrir la línea de comandos de Postgres. Como alternativa, puede realizarlo en un solo paso ejecutando el comando único psql como usuario de postgres con sudo, como se muestra:

      Esto le permitirá iniciar sesión de forma directa en Postgres sin el shell bash intermediario.

      De nuevo, puede salir de la sesión interactiva de Postgres escribiendo lo siguiente:

      En este paso, ha usado la cuenta postgres para llegar a la línea de comandos psql. Pero muchos casos de uso se requiere más de un rol de Postgres. Continúe leyendo para saber como configurar nuevos roles.

      Paso 4: Crear un nuevo rol

      En este momento, solo tiene el rol de postgres configurado dentro de la base de datos. Puede crear nuevos roles desde la línea de comandos con el comando createrole. El indicador --interactive le solicitará el nombre del nuevo rol y también le preguntará si debería tener permisos de superusuario.

      Si inició sesión a través de la cuenta de postgres, puede crear un nuevo usuario escribiendo lo siguiente:

      Si, como alternativa, prefiere usar sudo para cada comando sin dejar de usar su cuenta normal, escriba lo siguiente:

      • sudo -u postgres createuser --interactive

      La secuencia de comandos le mostrará algunas opciones y, según sus respuestas, ejecutará los comandos necesarios de Postgres para crear un usuario conforme a sus especificaciones. Para este tutorial, cree un rol llamado sammy y concédale privilegios de súper usuario introduciendo y cuando se le indique:

      Output

      Enter name of role to add: sammy Shall the new role be a superuser? (y/n) y

      Puede obtener un mayor control pasando algunos indicadores adicionales. Consulte las opciones visitando la página man para createuser:

      Ahora su instalación de Postgres tiene un rol nuevo, pero aún no agregó bases de datos. En la sección siguiente se describe este proceso.

      Paso 5: Crear una nueva base de datos

      Otra suposición que el sistema de autenticación de Postgres realiza por defecto es que para cualquier rol utilizado en el inicio de sesión habrá una base de datos con el mismo nombre al que este podrá acceder.

      Esto significa que, si el usuario que creó en la última sección se llama sammy, ese rol intentará conectarse con una base de datos que por defecto también se llama “sammy”. Puede crear dicha base de datos con el comando createdb.

      Si inició sesión a través de la cuenta de postgres, escribiría algo similar a lo siguiente:

      Si, como alternativa, prefiere utilizar sudo para cada comando sin dejar de emplear su cuenta normal, escribiría lo siguiente:

      • sudo -u postgres createdb sammy

      Esta flexibilidad ofrece varias vías para crear bases de datos cuando sea necesario.

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

      Paso 6: Abrir una línea de comandos de Postgres con el nuevo rol

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

      Si no tiene un usuario disponible de Linux que coincida, puede crear uno con el comando adduser. Deberá hacerlo desde su cuenta no root con privilegios sudo (es decir, sin iniciar sesión como usuario de postgres):

      Una vez que esté disponible esta cuenta nueva, podrá cambiar y conectarse a la base de datos escribiendo primero lo siguiente:

      También podrá hacerlo de forma directa:

      Este comando hará que inicie sesión automáticamente.

      Si desea que su usuario se conecte a una base de datos diferente, puede hacerlo incluyendo el indicador -d y especificando la base de datos, de esta forma:

      Una vez iniciada sesión, puede verificar la información de su conexión actual escribiendo lo siguiente:

      Esto mostrará el siguiente resultado:

      Output

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

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

      Al haber conectado con su base de datos, ahora puede intentar crear y eliminar tablas.

      Paso 7: Crear y eliminar tablas

      Ahora que sabe cómo conectarse al sistema de bases de datos de PostgreSQL, puede aprender algunas tareas básicas de administración de Postgres.

      Primero, cree una tabla para almacenar datos. A modo de ejemplo, creará una tabla en la que se describan algunos equipos para áreas recreativas.

      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)
      );
      

      Con estos comandos se asigna un nombre a la tabla y luego se definen las columnas, el tipo de columna y la extensión máxima de los datos de campo. De manera opcional, también puede añadir restricciones de tabla para cada columna.

      Para fines demostrativos, cree una tabla sencilla como la siguiente:

      • CREATE TABLE playground (
      • equip_id serial PRIMARY KEY,
      • type varchar (50) NOT NULL,
      • color varchar (25) NOT NULL,
      • location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
      • install_date date
      • );

      Este comando creará una tabla que realiza un inventario de equipos para áreas recreativas. Comienza con el ID de un equipo, que es del tipo serial. Este tipo de dato es un número entero que se incrementa de forma automática. También asignó a esta columna la restricción de PRIMARY KEY , lo cual significa que los valores deben ser únicos y no nulos.

      Para dos de las columnas (equip_id e install_date), el comando no especifica una extensión de campo. Esto se debe a que algunos tipos de columna no requieren una extensión específica porque la extensión está implícita en el tipo.

      Las siguientes dos líneas crean columnas para type y color del equipo respectivamente. Estas no pueden estar vacías. La línea tras estas crea una columna location y una restricción según la cual el valor debe ser uno de los ocho posibles. La última línea crea una columna de fecha en la cual se registra la fecha en la que usted instaló el equipo.

      Puede ver su tabla nueva escribiendo lo siguiente:

      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)

      Su tabla de áreas de recreación se encuentra aquí, pero también existe algo llamado playground_equip_id_seq que responde al tipo sequence. Esto es una representación del tipo serial que usted atribuyó a su columna de equip_id. Esto realiza un seguimiento del número que sigue en la secuencia y se genera de forma automática para columnas de este tipo.

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

      Obtendrá el siguiente resultado:

      Output

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

      En este paso, creó una tabla de ejemplo. En el siguiente paso, intentará añadir, consultar y eliminar entradas en esa tabla.

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

      Ahora que dispone de una tabla, puede insertar datos en ella.

      A modo de ejemplo, agregue un tobogán y un columpio invocando la tabla en la que desea realizar la adición, nombre las columnas y luego proporcione datos para cada una de ellas, como se muestra:

      • INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2017-04-28');
      • 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. Para empezar, no escriba los nombres de las columnas entre comillas. Estás sí se necesitarán para los valores de la columna que ingresó.

      Otro aspecto que debe tener en cuenta es no ingresar un valor para la columna equip_id. Esto es porque se genera automáticamente siempre que se cree una nueva fila en la tabla.

      Recupere la información que agregó escribiendo lo siguiente:

      • SELECT * FROM playground;

      Verá lo siguiente:

      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í, puede ver que su equip_id se completó con éxito y que todos sus otros datos se organizaron de forma correcta.

      Si el tobogán del área de recreación se daña y tiene que eliminarlo, también puede eliminar la fila de su tabla escribiendo lo siguiente:

      • DELETE FROM playground WHERE type = 'slide';

      Consulte la tabla de nuevo:

      • SELECT * FROM playground;

      Verá lo siguiente:

      Output

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

      Observará que su tobogán ya no se encuentra en la tabla.

      Ahora que ha añadido y eliminado entradas en su tabla, puede intentar añadir y eliminar columnas.

      Paso 9: Añadir y eliminar columnas de una tabla

      Tras crear una tabla, puede modificarla para añadir o eliminar columnas. Agregue una columna para mostrar la última visita de mantenimiento por cada equipo escribiendo lo siguiente:

      • ALTER TABLE playground ADD last_maint date;

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

      • SELECT * FROM playground;

      Verá 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 determina que su equipo de trabajo utiliza una herramienta separada para dar seguimiento al historial de mantenimiento, puede eliminar la columna escribiendo lo siguiente:

      • ALTER TABLE playground DROP last_maint;

      Con esto, se eliminan la columna last_maint y los valores que se encuentren en ella, pero deja intactos todos los demás datos.

      Tras añadir y eliminar columnas, puede intentar actualizar los datos existentes en el paso final.

      Paso 10: Actualizar datos de una tabla

      Hasta ahora, a través de este tutorial aprendió a agregar registros a una tabla y a eliminarlos de ella, pero aún no se abordó la forma de modificar los registros existentes.

      Puede actualizar los valores de una entrada existente buscando el registro que desee y fijando el valor que prefiera utilizar para la columna. Puede consultar el registro “columpio” (coincidirá con cada columpio de su tabla) y cambiar el color a “rojo”.

      • UPDATE playground SET color = 'red' WHERE type = 'swing';

      Puede verificar la eficacia de la operación consultando los datos de nuevo:

      • SELECT * FROM playground;

      Verá lo siguiente:

      Output

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

      Como puede ver, ahora el color registrado de su tobogán será el rojo.

      Conclusión

      Ahora está listo con PostgresSQL en su servidor CentOS 8. Sin embargo, aún queda mucho más por aprender con Postgres. A continuación, se ofrecen algunas guías más en las que se abarca el uso de Postgres:



      Source link

      Comment installer et utiliser PostgreSQL sur CentOS 8


      Introduction

      Les systèmes de gestion de bases de données relationnelles sont un élément clé de nombreux sites web et applications. Ils offrent un moyen structuré de stocker les informations, de les organiser et d’y accéder.

      PostgreSQL, également connu sous le nom de Postgres, est un système de gestion de base de données relationnelle qui fournit une implémentation du langage de requête structuré, mieux connu sous le nom de SQL. Il est utilisé par de nombreux projets populaires, grands et petits, est conforme aux normes et dispose de nombreuses fonctionnalités avancées, telles que des transactions fiables et une simultanéité sans serrures en lecture. 

      En suivant ce guide, vous installerez la dernière version de PostgreSQL sur un serveur CentOS 8.

      Conditions préalables

      Pour suivre ce tutoriel, vous aurez besoin d’un serveur fonctionnant sous CentOS 8. Ce serveur devra avoir un utilisateur non root avec des privilèges administratifs et un pare-feu configuré avec firewalld. Pour le mettre en place, suivez notre Guide de configuration initiale du serveur pour CentOS 8.

      Étape 1 – Installation de PostgreSQL

      PostgreSQL est disponible sur l’AppStream par défaut de CentOS 8 et il existe plusieurs versions que vous pouvez installer. Vous pouvez choisir entre ces versions en activant la collection appropriée de paquets et de dépendances qui s’alignent sur la version que vous voulez installer, chaque collection étant appelée module stream. 

      Dans DNF, le gestionnaire de paquets par défaut de CentOS 8, les modules sont des collections spéciales de paquets RPM qui, ensemble, constituent une application plus importante. L’objectif est de rendre l’installation des paquets et de leurs dépendances plus intuitive pour les utilisateurs.

      Listez les flux disponibles pour le module postgresql en utilisant la commande dnf :

      • dnf module list postgresql

      Output

      postgresql 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

      Vous pouvez voir dans cette sortie qu’il existe trois versions de PostgreSQL disponibles sur le site de dépôt AppStream : 9.6, 10, et 12. Le flux qui fournit la version 10 de Postgres est le flux par défaut, comme l’indique le [d] qui le suit. Si vous souhaitez installer cette version, il vous suffit d’exécuter sudo dnf install postgresql-server et de passer à l’étape suivante. Cependant, même si la version 10 est toujours maintenue, ce tutoriel installera la version 12 de Postgres, la dernière version en date au moment de la rédaction de ce document.

      Pour installer PostgreSQL version 12, vous devez activer le flux de modules de cette version. Lorsque vous activez un flux de modules, vous remplacez le flux par défaut et rendez tous les paquets liés au flux activé disponibles sur le système. Notez qu’un seul flux de tout module donné peut être activé sur un système en même temps.

      Pour activer le flux de modules pour la version 12 de Postgres, exécutez la commande suivante :

      • sudo dnf module enable postgresql:12

      Lorsque vous y êtes invité, appuyez sur y et ensuite ENTER pour confirmer que vous voulez activer le flux : 

      Output

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

      Après avoir activé le flux du module de la version 12, vous pouvez installer le postgresql-server pour installer PostgreSQL 12 et toutes ses dépendances : 

      • sudo dnf install postgresql-server

      A l’invite, confirmez l’installation en appuyant sur y puis sur ENTER (ENTRÉE) :

      Output

      . . . Install 4 Packages Total download size: 16 M Installed size: 62 M Is this ok [y/N]: y

      Maintenant que le logiciel est installé, vous allez effectuer quelques étapes d’initialisation pour préparer un nouveau cluster de base de données pour PostgreSQL.

      Étape 2 – Création d’un nouveau cluster de bases de données PostgreSQL

      Vous devez créer un nouveau cluster de base de données PostgreSQL avant de pouvoir commencer à créer des tables et à les charger avec des données. Un cluster de bases de données est un ensemble de bases de données gérées par une seule instance de serveur. La création d’un cluster de base de données consiste à créer les répertoires dans lesquels les données de la base de données seront placées, à générer les tables de catalogue partagées et à créer le template1 et les bases de données postgres.

      La base de données template1 est une sorte de modèle utilisé pour créer de nouvelles bases de données ; tout ce qui est stocké dans template1,même les objets que vous ajoutez vous-même seront placés dans de nouvelles bases de données lors de leur création. La base de données postgres est une base de données par défaut conçue pour être utilisée par les utilisateurs, les services publics et les applications tierces.

      Le paquet Postgres que nous avons installé à l’étape précédente est accompagné d’un script pratique appelé postgresql-setup qui aide à l’administration des clusters de bases de données de bas niveau. Pour créer un cluster de base de données, exécutez le script en utilisant sudo et avec l’option --initdb :

      • sudo postgresql-setup --initdb

      Vous verrez le résultat suivant :

      Output

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

      Démarrez maintenant le service PostgreSQL en utilisant systemctl : 

      • sudo systemctl start postgresql

      Ensuite, utilisez une fois de plus systemctl pour permettre au service de démarrer à chaque fois que le serveur démarre :

      • sudo systemctl enable postgresql

      Cela donnera le résultat suivant :

      Output

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

      Maintenant que PostgreSQL est opérationnel, nous allons passer en revue l’utilisation des rôles pour apprendre comment fonctionne Postgres et en quoi il est différent des systèmes de gestion de bases de données similaires que vous avez pu utiliser par le passé.

      Étape 3 – Utilisation des rôles et bases de données PostgreSQL

      PostgreSQL utilise un concept appelé « rôles » pour gérer l’authentification et l’autorisation des clients. Ceux-ci sont en quelque sorte similaires aux comptes réguliers de type Unix, mais Postgres ne fait pas de distinction entre les utilisateurs et les groupes et préfère plutôt le terme plus souple de « rôle ».

      Une fois installé, Postgres est configuré pour utiliser l’authentification ident, ce qui signifie qu’il associe les rôles Postgres à un compte système Unix/Linux correspondant. Si un rôle existe au sein de Postgres, un nom d’utilisateur Unix/Linux portant le même nom peut se connecter à ce rôle.

      La procédure d’installation a créé un compte utilisateur nommé postgres qui est associé au rôle Postgres par défaut. Pour utiliser PostgreSQL, vous pouvez vous connecter à ce compte.

      Il existe plusieurs façons d’utiliser ce compte pour accéder à l’invite PostgreSQL.

      Basculer sur le compte postgres

      Basculez sur le compte postgres sur votre serveur en tapant :

      Vous pouvez maintenant accéder immédiatement à une invite Postgres en tapant :

      Cela vous permettra de vous connecter à l’invite PostgreSQL, et de là, vous serez libre d’interagir immédiatement avec le système de gestion de la base de données.

      Sortez de l’invite PostgreSQL en tapant :

      Cela vous ramènera à la l’invite de commande Linux du compte postgres. Revenez ensuite à votre compte d’origine avec ce qui suit :

      Accéder à une invite Postgres sans changer de compte

      Vous pouvez également exécuter des commandes avec le comptepostgres directement en utilisant sudo. 

      Par exemple, dans l’exemple précédent, on vous a demandé d’accéder à l’invite de Postgres en passant d’abord à l’écran postgres user et ensuite de lancer psql pour ouvrir l’invite de Postgres. Vous pouvez faire cela en une seule étape en exécutant la commande unique psql en tant qu’utilisateur postgres avec privilèges sudo, comme ceci :

      Cela vous permettra de vous connecter directement à Postgres sans passer par le bash shell intermédiaire.

      Là encore, vous pouvez quitter la session Postgres interactive en tapant :

      Dans cette étape, vous avez utilisé le compte postgres pour accéder à l’invite psql. Mais de nombreux cas d’utilisation nécessitent plusieurs rôles Postgres. Lisez ce qui suit pour savoir comment configurer de nouveaux rôles.

      Étape 4 – Création d’un nouveau rôle

      Actuellement, le rôle postgres est le seul à être configuré dans la base de données. Vous pouvez créer de nouveaux rôles à partir de la ligne de commande avec la commande createrole. L’indicateur --interactive vous invitera à indiquer le nom du nouveau rôle et vous demandera également si celui-ci doit disposer des autorisations de superutilisateur.

      Si vous êtes connecté en tant que compte postgres, vous pouvez créer un nouvel utilisateur en tapant :

      Si, au contraire, vous préférez utiliser sudo pour chaque commande sans quitter votre compte normal, tapez :

      • sudo -u postgres createuser --interactive

      Le script vous proposera quelques choix et, en fonction de vos réponses, exécutera les commandes Postgres nécessaires pour créer un utilisateur selon vos spécifications. Pour ce tutoriel, créez un rôle nommé sammy et donnez-lui des privilèges de super-utilisateur en entrant y lorsque cela est nécessaire :

      Output

      Enter name of role to add: sammy Shall the new role be a superuser? (y/n) y

      Vous pouvez obtenir plus de contrôle en passant des indicateurs supplémentaires. Consultez les options en consultant la page de manuel de create user: 

      Votre installation de Postgres a maintenant un nouveau rôle, mais vous n’avez encore ajouté aucune base de données. La section suivante décrit ce processus.

      Étape 5 – Création d’une nouvelle base de données

      Une autre hypothèse posée par défaut par le système d’authentification Postgres est que tout rôle utilisé pour se connecter disposera d’une base de données du même nom à laquelle il pourra accéder.

      Cela signifie que si l’utilisateur que vous avez créé dans la dernière section est appelé sammy, ce rôle tentera de se connecter à une base de données qui est également appelée sammy par défaut. Vous pouvez créer une telle base de données avec la commande createdb.

      Si vous êtes connecté en tant que compte postgres, vous devez taper quelque chose comme :

      Si, au contraire, vous préférez utiliser sudo pour chaque commande sans quitter votre compte normal, vous devez taper :

      • sudo -u postgres createdb sammy

      Cette flexibilité offre de multiples façons de créer des bases de données au besoin.

      Maintenant que vous avez créé une nouvelle base de données, vous allez vous y connecter avec votre nouveau rôle.

      Étape 6 – Ouvrir une invite Postgres avec le nouveau rôle

      Pour vous connecter avec une authentification basée sur l’identité, vous aurez besoin d’un utilisateur Linux portant le même nom que votre rôle et votre base de données Postgres.

      Si vous n’avez pas d’utilisateur Linux correspondant disponible, vous pouvez en créer un avec la commande adduser. Vous devrez le faire à partir de votre compte non root avec privilèges sudo (c’est-à-dire sans être connecté en tant qu’utilisateur postgres) :

      Une fois ce nouveau compte disponible, vous pouvez basculer sur ce dernier et vous connecter à la base de données en tapant :

      Ou alors, vous pouvez le faire en ligne :

      Cette commande vous permettra de vous connecter automatiquement.

      Si vous souhaitez que votre utilisateur se connecte à une autre base de données, vous pouvez le faire en incluant le drapeau -d et en spécifiant la base de données, comme ceci : 

      Une fois connecté, vous pouvez vérifier vos informations de connexion actuelles en tapant :

      Cela donnera le résultat suivant :

      Output

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

      Cette commande est utile si vous vous connectez à des bases de données qui ne sont pas celles par défaut ou avec des utilisateurs qui ne sont pas ceux par défaut.

      Après vous être connecté à votre base de données, vous pouvez maintenant essayer de créer et de supprimer des tables.

      Étape 7 – Créer et supprimer des tables

      Maintenant que vous savez comment vous connecter au système de base de données PostgreSQL, il est temps de découvrir quelques tâches de gestion basiques de Postgres.

      Tout d’abord, créez une table pour stocker certaines données. Par exemple, vous allez créer une table qui décrit certains équipements d’une aire de jeux.

      La syntaxe de base de cette commande est la suivante :

      CREATE TABLE table_name (
          column_name1 col_type (field_length) column_constraints,
          column_name2 col_type (field_length),
          column_name3 col_type (field_length)
      );
      

      Ces commandes donnent un nom à la table, puis définissent les colonnes ainsi que le type de colonne et la longueur maximale des données du champ. Vous pouvez également ajouter des contraintes de table pour chaque colonne.

      À des fins de démonstration, créez une simple table comme celle-ci :

      • CREATE TABLE playground (
      • equip_id serial PRIMARY KEY,
      • type varchar (50) NOT NULL,
      • color varchar (25) NOT NULL,
      • location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
      • install_date date
      • );

      Cette commande permet de créer une table d’inventaire des équipements de terrain de jeu. Elle commence par une identification de l’équipement, qui est de type série. Ce type de données est un entier auto-incrémenté. Vous avez également donné à cette colonne la contrainte de CLÉ PRIMAIRE ce qui signifie que les valeurs doivent être uniques et non nulles. 

      Pour deux des colonnes (equip_id et install_date), la commande ne spécifie pas de longueur de champ. En effet, certains types de colonnes n’ont pas besoin d’une longueur fixe car la longueur est déduite du type.

      Les deux lignes suivantes créent des colonnes pour l’équipement respectivement le type et color, chacune ne pouvant pas être vide. La ligne après ceux-ci crée une colonne location et une contrainte qui requiert que la valeur soit l’une des huit valeurs possibles. La dernière ligne crée une colonne de date qui enregistre la date à laquelle vous avez installé l’équipement.

      Vous pouvez voir votre nouvelle table en tapant :

      Cela donnera le résultat suivant :

      Output

      List of relations Schema | Name | Type | Owner --------+-------------------------+----------+------- public | playground | table | sammy public | playground_equip_id_seq | sequence | sammy (2 rows)

      Votre table « playground » est là, mais il y a aussi un élément nommé playground_equip_id_seq qui est du type sequence. Il s’agit d’une représentation du type de série que vous avez donné à votre colonne equip_id. Ceci permet de garder une trace du prochain numéro de la séquence et est créé automatiquement pour les colonnes de ce type.

      Si vous voulez voir uniquement la table sans la séquence, vous pouvez taper :

      Il en résultera ce qui suit :

      Output

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

      Dans cette étape, vous avez créé un exemple de table. Dans l’étape suivante, vous allez essayer d’ajouter, d’interroger et de supprimer des entrées dans cette table.

      Étape 8 – Ajouter, interroger et supprimer des données dans une table

      Maintenant que vous avez une table, vous pouvez y insérer quelques données.

      Par exemple, ajoutez une diapositive et une balançoire en appelant la table à laquelle vous voulez ajouter, en nommant les colonnes, puis en fournissant des données pour chaque colonne, comme ceci :

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

      Vous devez faire attention lors de la saisie des données afin d’éviter quelques problèmes courants. Pour commencer, les noms des colonnes ne doivent pas être mis entre guillemets, mais les valeurs des colonnes que vous saisissez doivent l’être.

      Une autre chose à garder à l’esprit est que vous n’entrez pas de valeur pour la colonne equip_id. En effet, il est généré automatiquement chaque fois qu’une nouvelle ligne est créée dans la table.

      Récupérez les informations que vous avez ajoutées en tapant :

      • SELECT * FROM playground;

      Vous verrez le résultat suivant :

      Output

      equip_id | type | color | location | install_date ----------+-------+--------+-----------+-------------- 1 | slide | blue | south | 2017-04-28 2 | swing | yellow | northwest | 2018-08-16 (2 rows)

      Ici, vous pouvez voir que votre equip_id a bien été renseigné et que toutes vos autres données ont été organisées correctement.

      Si le toboggan de l’aire de jeu se casse et que vous devez l’enlever, vous pouvez également enlever la ligne de votre table en tapant :

      • DELETE FROM playground WHERE type = 'slide';

      Interrogez à nouveau la table :

      • SELECT * FROM playground;

      Vous verrez ce qui suit :

      Output

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

      Remarquez que votre diapositive ne fait plus partie de la table.

      Maintenant que vous avez ajouté et supprimé des entrées dans votre table, vous pouvez essayer d’ajouter et de supprimer des colonnes.

      Étape 9 – Ajouter et supprimer des colonnes d’une table

      Après avoir créé une table, vous pouvez la modifier pour ajouter ou supprimer des colonnes. Ajoutez une colonne pour indiquer la dernière visite de maintenance pour chaque équipement en tapant :

      • ALTER TABLE playground ADD last_maint date;

      Si vous affichez à nouveau les informations de votre table, vous verrez que la nouvelle colonne a été ajoutée (mais qu’aucune donnée n’a été saisie) :

      • SELECT * FROM playground;

      Vous verrez ce qui suit :

      Output

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

      La suppression d’une colonne est tout aussi simple. Si vous constatez que votre équipe de travail utilise un outil distinct pour suivre l’historique de la maintenance, vous pouvez supprimer la colonne en tapant :

      • ALTER TABLE playground DROP last_maint;

      Cela supprime la colonne last_maint et toutes les valeurs qui s’y trouvent, mais laisse toutes les autres données intactes.

      Maintenant que vous avez ajouté et supprimé des colonnes, vous pouvez essayer de mettre à jour les données existantes lors de la dernière étape.

      Étape 10 – Mise à à jour les données dans une table

      Jusqu’à présent, vous avez appris comment ajouter des enregistrements à une table et comment les supprimer, mais ce tutoriel n’a pas encore évoqué comment modifier des entrées existantes.

      Vous pouvez mettre à jour les valeurs d’une entrée existante en interrogeant l’enregistrement que vous souhaitez et en paramétrant la colonne sur la valeur que vous souhaitez utiliser. Vous pouvez interroger l’enregistrement swing (balançoire) ; cela correspondra à chaque balançoire de votre table et changera sa couleur en rouge :

      • UPDATE playground SET color = 'red' WHERE type = 'swing';

      Vous pouvez vérifier que l’opération a réussi en effectuant une nouvelle requête :

      • SELECT * FROM playground;

      Vous verrez ce qui suit :

      Output

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

      Comme vous pouvez le voir, votre balançoire est maintenant enregistrée comme étant rouge.

      Conclusion

      Vous êtes maintenant paramétré avec PostgreSQL sur votre serveur CentOS 8. Cependant, il y a encore beaucoup de choses à découvrir sur Postgres. Voici d’autres guides sur l’utilisation de Postgres :



      Source link