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.
Conclusion
Vous êtes maintenant configuré avec PostgreSQL sur votre serveur CentOS 7. Cependant, il reste encore beaucoup à apprendre avec Postgres. Bien que beaucoup d’entre eux aient été écrits avec Ubuntu à l’esprit, ces tutoriels devraient être utiles pour en savoir plus sur PostgreSQL:
-
Une comparaison des systèmes de gestion de base de données relationnelle
-
Obtenir une meilleure gestion des rôles et des autorisations
-
Installer phpPgAdmin pour administrer des bases de données à partir d’une interface Web sous Ubuntu
-
Configurez la réplication maître-esclave avec Postgres sur Ubuntu
-
Découvrez comment sauvegarder une base de données Postgres sur Ubuntu