Introduction
Les systèmes de gestion de base de données relationnelles sont un composant clé de nombreux sites web et applications. Ils fournissent un moyen structuré de stocker, organiser et accéder à l’information.
PostgreSQL, ou Postgres, est un système de gestion de base de données relationnelles qui fournit une implémentation du langage de requête SQL. Il est conforme aux normes et dispose de nombreuses fonctionnalités avancées telles que des transactions fiables et la concurrence sans verrous en lecture.
Ce guide montre comment installer Postgres sur un serveur Ubuntu 20.04. Il fournit également quelques instructions pour l’administration générale de la base de données.
1-Cliquez pour déployer une base de données PostgreSQL en utilisant les bases de données gérées de DigitalOcean. Laissez DigitalOcean se concentrer sur l’évolutivité, la maintenance et les mises à jour de votre base de données.
Prérequis
Pour suivre ce tutoriel, vous aurez besoin d’un serveur Ubuntu 20.04 qui a été configuré en suivant notre guide Configuration initiale du serveur pour Ubuntu 20.04. Après avoir terminé ce tutoriel préalable, votre serveur devrait disposer d’un utilisateur non root avec des permissions sudo et un pare-feu de base.
Étape 1 — Installation de PostgreSQL
Les dépôts par défaut d’Ubuntu contiennent des paquets Postgres, vous pouvez donc les installer en utilisant le système de gestion de paquets apt
.
Si vous ne l’avez pas fait récemment, actualisez l’index local des paquets de votre serveur:
Ensuite, installez le paquet Postgres ainsi qu’un paquet -contrib
qui ajoute quelques utilitaires et fonctionnalités supplémentaires:
Assurez-vous que le serveur est en cours d’exécution en utilisant la commande systemctl start
:
Maintenant que le logiciel est installé et en cours d’exécution, nous pouvons passer en revue son fonctionnement et comment il peut être différent des autres systèmes de gestion de base de données relationnelles que vous avez pu utiliser.
Étape 2 — Utilisation des rôles et des bases de données PostgreSQL
Par défaut, Postgres utilise un concept appelé « rôles » pour gérer l’authentification et l’autorisation. Ceux-ci sont, d’une certaine manière, similaires aux comptes Unix classiques, mais Postgres ne fait pas de distinction entre les utilisateurs et les groupes et préfère plutôt le terme plus flexible de « rôle ».
Lors de l’installation, Postgres est configuré pour utiliser l’authentification peer, ce qui signifie qu’il associe les rôles Postgres à un compte système Unix/Linux correspondant. Si un rôle existe dans Postgres, un nom d’utilisateur Unix/Linux portant le même nom peut se connecter en tant que ce rôle.
La procédure d’installation a créé un compte utilisateur appelé postgres qui est associé au rôle Postgres par défaut. Pour utiliser Postgres, vous pouvez vous connecter à ce compte.
Il existe plusieurs façons d’utiliser ce compte pour accéder à Postgres.
Passer au compte postgres
Passez au compte postgres sur votre serveur en tapant :
Vous pouvez maintenant accéder immédiatement à l’invite PostgreSQL en tapant :
À partir de là, vous êtes libre d’interagir avec le système de gestion de base de données selon les besoins.
Quittez l’invite PostgreSQL en tapant :
Cela vous ramènera à l’invite de commande Linux postgres
.
Accéder à un invite de commande Postgres sans changer de compte
Vous pouvez également exécuter la commande souhaitée avec le compte postgres directement avec sudo
.
Par exemple, dans le dernier exemple, vous avez été invité à accéder à l’invite de commande Postgres en passant d’abord à l’utilisateur postgres puis en exécutant psql
pour ouvrir l’invite de commande Postgres. Vous pourriez faire cela en une seule étape en exécutant la commande unique psql
en tant qu’utilisateur postgres avec sudo
, comme ceci :
Cela vous connectera directement à Postgres sans l’intermédiaire de l’invite de commande bash
.
Encore une fois, vous pouvez quitter la session interactive Postgres en tapant :
De nombreux cas d’utilisation nécessitent plus d’un rôle Postgres. Continuez à lire pour apprendre comment les configurer.
Étape 3 — Création d’un nouveau rôle
Actuellement, vous avez seulement le rôle postgres 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
. Le drapeau --interactive
vous demandera le nom du nouveau rôle et vous demandera également s’il doit avoir 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 changer de compte normal, tapez :
Le script vous demandera quelques choix et, en fonction de vos réponses, exécutera les bonnes commandes Postgres pour créer un utilisateur selon vos spécifications.
OutputEnter 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 quelques drapeaux supplémentaires. Consultez les options en regardant la page man
:
Votre installation de Postgres a maintenant un nouvel utilisateur, mais vous n’avez pas encore ajouté de bases de données. La section suivante décrit ce processus.
Étape 4 — Création d’une nouvelle base de données
Une autre hypothèse que le système d’authentification de Postgres fait par défaut est que pour tout rôle utilisé pour se connecter, ce rôle aura une base de données avec le même nom auquel il peut accéder.
Cela signifie que si l’utilisateur que vous avez créé dans la dernière section s’appelle sammy, ce rôle tentera de se connecter à une base de données qui s’appelle également « sammy » par défaut. Vous pouvez créer la base de données appropriée avec la commande createdb
.
Si vous êtes connecté en tant que compte postgres, vous devriez taper quelque chose comme ceci :
Si, au lieu de cela, vous préférez utiliser sudo
pour chaque commande sans changer de votre compte normal, vous devriez taper :
Cette flexibilité offre plusieurs possibilités pour créer des bases de données au besoin.
Étape 5 — Ouvrir une invite Postgres avec le nouveau rôle
Pour vous connecter avec une authentification par pair, 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 un utilisateur Linux correspondant disponible, vous pouvez en créer un avec la commande adduser
. Vous devrez le faire depuis votre compte non-root avec des privilèges sudo
(ce qui signifie, ne pas être connecté en tant que l’utilisateur postgres) :
Une fois ce nouveau compte disponible, vous pouvez soit basculer et vous connecter à la base de données en tapant :
Ou, vous pouvez le faire en ligne :
Cette commande vous connectera automatiquement, en supposant que tous les composants aient été correctement configurés.
Si vous souhaitez que votre utilisateur se connecte à une base de données différente, vous pouvez le faire en spécifiant la base de données comme ceci :
Une fois connecté, vous pouvez vérifier vos informations de connexion actuelles en tapant :
OutputYou are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".
Ceci est utile si vous vous connectez à des bases de données non par défaut ou avec des utilisateurs non par défaut.
Étape 6 — Création et Suppression de Tables
Maintenant que vous savez comment vous connecter au système de base de données PostgreSQL, vous pouvez apprendre quelques tâches de gestion de base de données PostgreSQL.
La syntaxe de base pour la création de tables 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)
);
Comme vous pouvez le voir, 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 facultativement des contraintes de table pour chaque colonne.
Vous pouvez en apprendre plus sur comment créer et gérer des tables dans PostgreSQL ici.
À des fins de démonstration, créez la table suivante :
Cette commande créera une table qui répertorie l’équipement de terrain de jeu. La première colonne de la table contiendra des numéros d’identification d’équipement de type serial
, qui est un entier incrémenté automatiquement. Cette colonne a également la contrainte de PRIMARY KEY
, ce qui signifie que les valeurs à l’intérieur doivent être uniques et non nulles.
Les deux lignes suivantes créent des colonnes pour le type d’équipement type
et color
respectivement, aucune des deux ne peut être vide. La ligne suivante crée une colonne location
ainsi qu’une contrainte qui exige que la valeur soit l’une des huit valeurs possibles. La dernière ligne crée une colonne date
qui enregistre la date à laquelle vous avez installé l’équipement.
Pour deux des colonnes (equip_id
et install_date
), la commande ne spécifie pas de longueur de champ. La raison en est que certains types de données ne nécessitent pas de longueur définie car la longueur ou le format est implicite.
Vous pouvez voir votre nouvelle table en tapant :
Output List of relations
Schema | Name | Type | Owner
--------+-------------------------+----------+-------
public | playground | table | sammy
public | playground_equip_id_seq | sequence | sammy
(2 rows)
Votre table de jeux est ici, mais il y a aussi quelque chose appelé playground_equip_id_seq
qui est de type séquence
. C’est une représentation du type sérial
que vous avez donné à votre colonne equip_id
. Cela garde une trace du prochain numéro dans la séquence et est créé automatiquement pour les colonnes de ce type.
Si vous voulez voir juste la table sans la séquence, vous pouvez taper :
Output List of relations
Schema | Name | Type | Owner
--------+------------+-------+-------
public | playground | table | sammy
(1 row)
Avec une table prête, utilisons-la pour pratiquer la gestion des données.
Étape 7 — Ajouter, Interroger et Supprimer des Données dans une Table
Maintenant que vous avez une table, vous pouvez y insérer des données. À titre d’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 :
Vous devez faire attention lors de la saisie des données pour éviter quelques problèmes courants. Pour commencer, ne mettez pas les noms de colonnes entre guillemets, mais les valeurs de colonnes que vous saisissez doivent être entre guillemets.
Autre chose à garder à l’esprit est que vous ne saisissez pas de valeur pour la colonne equip_id
. Cela est dû au fait que cela est généré automatiquement chaque fois que vous ajoutez une nouvelle ligne à la table.
Récupérez les informations que vous avez ajoutées en tapant :
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 été rempli avec succès et que toutes vos autres données ont été organisées correctement.
Si la diapositive sur l’aire de jeux se casse et que vous devez la retirer, vous pouvez également supprimer la ligne de votre table en tapant :
Interrogez à nouveau la table :
Output equip_id | type | color | location | install_date
----------+-------+--------+-----------+--------------
2 | swing | yellow | northwest | 2018-08-16
(1 row)
Remarquez que la ligne slide
ne fait plus partie de la table.
Étape 8 — Ajout et Suppression de Colonnes dans une Table
Après avoir créé une table, vous pouvez la modifier en ajoutant ou en supprimant des colonnes. Ajoutez une colonne pour afficher la dernière visite de maintenance pour chaque équipement en tapant :
Si vous consultez à nouveau les informations de votre table, vous verrez que la nouvelle colonne a été ajoutée mais aucune donnée n’a été saisie :
Output equip_id | type | color | location | install_date | last_maint
----------+-------+--------+-----------+--------------+------------
2 | swing | yellow | northwest | 2018-08-16 |
(1 row)
Si vous constatez que votre équipe utilise un outil distinct pour suivre l’historique de maintenance, vous pouvez supprimer la colonne en tapant :
Cela supprime la colonne last_maint
et toutes les valeurs qu’elle contient, mais laisse toutes les autres données intactes.
Étape 9 — Mise à jour des 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 couvert comment modifier les entrées existantes.
Vous pouvez mettre à jour les valeurs d’une entrée existante en interrogeant l’enregistrement que vous souhaitez et en définissant la colonne sur la valeur que vous souhaitez utiliser. Vous pouvez interroger l’enregistrement swing
(ceci correspondra à chaque balançoire dans votre table) et changer sa couleur en rouge
. Cela pourrait être utile si vous avez repeint la balançoire :
Vous pouvez vérifier que l’opération a été réussie en interrogeant à nouveau les données :
Output equip_id | type | color | location | install_date
----------+-------+-------+-----------+--------------
2 | swing | red | northwest | 2018-08-16
(1 row)
Comme vous pouvez le voir, le toboggan est maintenant enregistré comme étant rouge.
Conclusion
Vous êtes maintenant configuré avec PostgreSQL sur votre serveur Ubuntu 20.04. Si vous souhaitez en savoir plus sur Postgres et comment l’utiliser, nous vous encourageons à consulter les guides suivants :
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-20-04