Comment installer et utiliser PostgreSQL sur CentOS 7

introduction

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

  • PostgreSQL *, ou Postgres, est un système de gestion de base de données relationnelle qui fournit une implémentation du langage de requête SQL. C’est un choix populaire pour de nombreux projets, petits et grands, qui présente l’avantage d’être conforme aux normes et de disposer de nombreuses fonctionnalités avancées telles que les transactions fiables et la simultanéité sans verrous de lecture.

Dans ce guide, nous montrerons comment installer Postgres sur CentOS 7 et commentons l’utilisation de base.

Installation

Les référentiels par défaut de CentOS contiennent des packages Postgres. Nous pouvons donc les installer sans problème en utilisant le système de packages + yum +.

Installez le paquet postgresql-server et le paquet «contrib», qui ajoute quelques utilitaires et fonctionnalités supplémentaires:

sudo yum install postgresql-server postgresql-contrib

Acceptez l’invite en répondant avec un + y +.

Maintenant que notre logiciel est installé, nous devons effectuer quelques étapes avant de pouvoir l’utiliser.

Créez un nouveau cluster de base de données PostgreSQL:

sudo postgresql-setup initdb

Par défaut, PostgreSQL n’autorise pas l’authentification par mot de passe. Nous allons changer cela en modifiant sa configuration d’authentification basée sur l’hôte (HBA).

Ouvrez la configuration HBA avec votre éditeur de texte préféré. Nous allons utiliser vi:

sudo vi /var/lib/pgsql/data/pg_hba.conf

Trouvez les lignes qui ressemblent à ceci, près du bas du fichier:

pg_hba.conf extrait (original)

host    all             all             127.0.0.1/32            ident
host    all             all             ::1/128                 ident

Puis remplacez «ident» par «md5», ils se présentent ainsi:

pg_hba.conf extrait (mis à jour)

host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5

Sauvegarder et quitter. PostgreSQL est maintenant configuré pour autoriser l’authentification par mot de passe.

Maintenant, démarrez et activez PostgreSQL:

sudo systemctl start postgresql
sudo systemctl enable postgresql

PostgreSQL est maintenant prêt à être utilisé. Nous pouvons voir comment cela fonctionne et en quoi il peut être différent des systèmes de gestion de base de données similaires que vous avez utilisés.

Utilisation de rôles et de bases de données PostgreSQL

Par défaut, Postgres utilise un concept appelé «rôles» pour faciliter l’authentification et l’autorisation. Celles-ci ressemblent, à certains égards, aux comptes normaux de style Unix, mais Postgres ne fait pas de distinction entre les utilisateurs et les groupes, mais préfère le terme plus souple «rôle».

Lors de l’installation, 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. S’il existe un rôle Postgres, vous pouvez vous connecter en vous connectant au compte système Linux associé.

La procédure d’installation a créé un compte utilisateur appelé + postgres + associé au rôle Postgres par défaut. Pour utiliser Postgres, nous devons nous connecter à ce compte. Vous pouvez le faire en tapant:

sudo -i -u postgres

On vous demandera votre mot de passe d’utilisateur normal, puis une invite du shell pour l’utilisateur + postgres +.

Vous pouvez obtenir immédiatement une invite Postgres en tapant:

psql

Vous serez automatiquement connecté et pourrez interagir immédiatement avec le système de gestion de base de données.

Cependant, nous allons expliquer un peu comment utiliser d’autres rôles et bases de données, afin que vous disposiez d’une certaine flexibilité quant à l’utilisateur et à la base de données avec lesquels vous souhaitez travailler.

Quittez l’invite de PostgreSQL en tapant:

\q

Vous devriez maintenant être de retour dans l’invite de commande + postgres + user.

Créer un nouveau rôle

À partir du compte Linux + postgres +, vous avez la possibilité de vous connecter au système de base de données. Cependant, nous allons également montrer comment créer des rôles supplémentaires. Le compte Linux + postgres +, étant associé au rôle administratif Postgres, a accès à certains utilitaires pour créer des utilisateurs et des bases de données.

Nous pouvons créer un nouveau rôle en tapant:

createuser --interactive

Il s’agit essentiellement d’un script shell interactif qui appelle les commandes Postgres appropriées pour créer un utilisateur conforme à vos spécifications. Il ne vous posera que deux questions: le nom du rôle et s’il doit s’agir d’un superutilisateur. Vous pouvez obtenir plus de contrôle en passant des drapeaux supplémentaires. Découvrez les options en consultant la page + man +:

man createuser

Créer une nouvelle base de données

Le mode de configuration par défaut de Postgres (authentification des rôles demandés par les comptes système correspondants) vient également avec l’hypothèse qu’une base de données correspondante existera pour le rôle auquel se connecter.

Donc, si j’ai un utilisateur appelé + test1 +, ce rôle tentera de se connecter à une base de données appelée + test1 + par défaut.

Vous pouvez créer la base de données appropriée en appelant simplement cette commande en tant qu’utilisateur + postgres +:

createdb

Se connecter à Postgres avec le nouvel utilisateur

Supposons que vous avez un compte système Linux appelé + test1 + (vous pouvez en créer un en tapant: + sudo adduser test1 +), et que vous avez créé un rôle et une base de données Postgres également appelé + test1 +.

Vous pouvez changer le compte système Linux en tapant:

sudo -i -u

Vous pouvez ensuite vous connecter à la base de données + test1 + en tant que rôle Postgres + test1 + en tapant:

psql

Cela ouvrira automatiquement une session en supposant que tous les composants ont été configurés.

Si vous voulez que votre utilisateur se connecte à une autre base de données, vous pouvez le faire en spécifiant la base de données comme ceci (assurez-vous que vous avez "+ \ q +" à l’invite de commande):

psql -d

Vous pouvez obtenir des informations sur l’utilisateur Postgres auquel vous êtes connecté et sur la base de données à laquelle vous êtes actuellement connecté en tapant:

\conninfo
Output:You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".

Cela peut vous aider à vous rappeler vos paramètres actuels si vous vous connectez à des bases de données non définies par défaut ou à des utilisateurs autres que ceux par défaut.

Créer et supprimer des tables

Maintenant que vous savez comment vous connecter au système de base de données PostgreSQL, nous allons commencer à examiner comment effectuer certaines tâches de base.

Commençons par créer une table pour stocker des données. Créons un tableau décrivant les équipements de jeux.

La syntaxe de base de cette commande ressemble à ceci:

CREATE TABLE  (
    () ,
    (),
    ()
);

Comme vous pouvez le constater, nous attribuons un nom à la table, puis nous définissons les colonnes souhaitées, ainsi que le type de colonne et la longueur maximale des données de champ. Nous pouvons aussi éventuellement ajouter des contraintes de table pour chaque colonne.

Vous pouvez en savoir plus sur how pour créer et gérer des tables dans Postgres ici.

Pour nos besoins, nous allons créer un tableau simple comme celui-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
);

Nous avons créé une table de jeu qui répertorie le matériel dont nous disposons. Cela commence par un ID d’équipement de type + serial +. Ce type de données est un entier auto-incrémenté. Nous avons attribué à cette colonne la contrainte + clé primaire +, ce qui signifie que les valeurs doivent être uniques et non nulles.

Pour deux de nos colonnes, nous n’avons pas donné de longueur de champ. Cela est dû au fait que certains types de colonnes ne nécessitent pas de longueur définie, car la longueur est impliquée par le type.

Nous donnons ensuite des colonnes pour le type d’équipement et la couleur, qui ne peuvent pas toutes être vides. Nous créons ensuite une colonne d’emplacement et une contrainte qui exige que la valeur soit l’une des huit valeurs possibles. La dernière colonne est une colonne de date qui enregistre la date d’installation de l’équipement.

Nous pouvons voir notre nouvelle table en tapant ceci:

\d
Output:                   List of relations
Schema |          Name           |   Type   |  Owner
--------+-------------------------+----------+----------
public | playground              | table    | postgres
public | playground_equip_id_seq | sequence | postgres
(2 rows)

Comme vous pouvez le constater, nous avons notre table de jeu, mais nous avons aussi quelque chose appelé + playground_equip_id_seq + qui est du type + sequence +. Ceci est une représentation du type "série" que nous avons donné à notre colonne + equip_id +. Ceci garde la trace du prochain numéro de la séquence.

Si vous voulez voir uniquement la table, vous pouvez taper:

\dt
Output:           List of relations
Schema |    Name    | Type  |  Owner
--------+------------+-------+----------
public | playground | table | postgres
(1 row)

Ajouter, interroger et supprimer des données dans une table

Maintenant que nous avons créé une table, nous pouvons y insérer des données.

Ajoutons une diapositive et une balançoire. Pour cela, nous appelons la table à laquelle nous voulons ajouter, en nommant les colonnes, puis en fournissant des données pour chaque colonne. Notre slide et notre swing pourraient être ajoutés comme ceci:

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

Vous devriez remarquer quelques petites choses. Tout d’abord, gardez à l’esprit que les noms de colonne ne doivent pas être cités, mais que la colonne values que vous entrez nécessite des guillemets.

Une autre chose à garder à l’esprit est que nous ne saisissons pas de valeur pour la colonne + equip_id +. En effet, cela est généré automatiquement chaque fois qu’une nouvelle ligne de la table est créée.

Nous pouvons ensuite récupérer les informations que nous avons ajoutées en tapant:

SELECT * FROM playground;
Output: equip_id | type  | color  | location  | install_date
----------+-------+--------+-----------+--------------
       1 | slide | blue   | south     | 2014-04-28
       2 | swing | yellow | northwest | 2010-08-16
(2 rows)

Ici, vous pouvez voir que notre + equip_id + a été rempli avec succès et que toutes nos autres données ont été organisées correctement.

Si notre diapositive se casse et que nous la retirons du terrain de jeu, nous pouvons également supprimer la ligne de notre table en tapant:

DELETE FROM playground WHERE type = 'slide';

Si nous interrogeons à nouveau notre table, nous verrons que notre diapositive ne fait plus partie de la table:

SELECT * FROM playground;
Output: equip_id | type  | color  | location  | install_date
----------+-------+--------+-----------+--------------
       2 | swing | yellow | northwest | 2010-08-16
(1 row)

Comment ajouter et supprimer des colonnes d’une table

Si nous voulons modifier une table après sa création pour ajouter une colonne supplémentaire, nous pouvons le faire facilement.

Nous pouvons ajouter une colonne pour afficher la dernière visite de maintenance pour chaque équipement en tapant:

ALTER TABLE playground ADD last_maint date;

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

SELECT * FROM playground;
Output: equip_id | type  | color  | location  | install_date | last_maint
----------+-------+--------+-----------+--------------+------------
       2 | swing | yellow | northwest | 2010-08-16   |
(1 row)

Nous pouvons supprimer une colonne aussi facilement. Si nous constatons que notre équipe de travail utilise un outil distinct pour garder une trace de l’historique de maintenance, nous pouvons supprimer cette colonne en tapant:

ALTER TABLE playground DROP last_maint;

Comment mettre à jour des données dans une table

Nous savons comment ajouter des enregistrements à une table et comment les supprimer, mais nous n’avons pas encore expliqué comment modifier des entrées existantes.

Vous pouvez mettre à jour les valeurs d’une entrée existante en interrogeant l’enregistrement souhaité et en définissant la colonne sur la valeur que vous souhaitez utiliser. Nous pouvons demander l’enregistrement «swing» (cela correspondra à every swing dans notre tableau) et changer sa couleur en «rouge». Cela pourrait être utile si nous lui donnions un travail de peinture:

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

Nous pouvons vérifier que l’opération a réussi en interrogeant à nouveau nos données:

SELECT * FROM playground;
Output: equip_id | type  | color | location  | install_date
----------+-------+-------+-----------+--------------
       2 | swing | red   | northwest | 2010-08-16
(1 row)

Comme vous pouvez le constater, notre diapositive est maintenant enregistrée comme étant en rouge.