Comment installer et utiliser PostgreSQL 9.4 sur Debian 8

introduction

Les bases de données relationnelles sont la pierre angulaire de l’organisation des données pour une multitude de besoins. Ils alimentent tout, des achats en ligne aux lancements de fusées. PostgreSQL est une base de données à la fois vénérable mais très présente dans le jeu. PostgreSQL respecte la plupart des normes SQL, effectue des transactions ACID, prend en charge les clés étrangères et les vues, et poursuit son développement actif.

Si l’application que vous exécutez a besoin de stabilité, de qualité des paquets et d’une administration aisée, Debian 8 (nom de code «Jessie») est l’un des meilleurs candidats pour une distribution Linux. Il se déplace un peu plus lentement que les autres «distributions», mais sa stabilité et sa qualité sont bien reconnues. Si votre application ou service a besoin d’une base de données, la combinaison de Debian 8 et de PostgreSQL est l’une des meilleures de la ville.

Dans cet article, nous allons vous montrer comment installer PostgreSQL sur une nouvelle instance de Debian 8 Stable et commencer.

Conditions préalables

La première chose à faire est de mettre en marche un système Debian 8 Stable. Vous pouvez suivre les instructions à partir de l’article Initial Initial Server Setup with Debian 8. Ce tutoriel suppose que vous avez déjà été prêt pour Debian 8 Stable Droplet.

Sauf indication contraire, toutes les commandes de ce didacticiel doivent être exécutées en tant qu’utilisateur non root avec les privilèges sudo. Pour apprendre à créer des utilisateurs et leur accorder des privilèges sudo, consultez la page Initial Initial Server avec Debian 8.

Installer PostgreSQL

Avant d’installer PostgreSQL, assurez-vous de disposer des informations les plus récentes des référentiels Debian en mettant à jour la liste des paquets apt avec:

sudo apt-get update

Vous devriez voir les listes de paquets en cours de mise à jour et le message suivant:

Reading package lists... Done.

Il y a plusieurs paquets qui commencent par + postgresql:

  • + postgresql-9.4 +: Le paquet du serveur PostgreSQL

  • + postgresql-client-9.4 +: le client pour PostgreSQL

  • + postgresql +: Un «méta-paquet» mieux expliqué par le Debian Handbook ou par le http: //www.debian. org / doc / manuals / maint-guide / [Guide du nouveau responsable Debian]

Pour installer directement le paquet + postgresql-9.4 +:

sudo apt-get install postgresql-9.4 postgresql-client-9.4

Lorsque vous y êtes invité, tapez + Y + pour installer les packages. Si tout s’est bien passé, les packages sont maintenant téléchargés du référentiel et installés.

Vérification de l’installation

Pour vérifier que le serveur PostgreSQL est correctement installé et en cours d’exécution, vous pouvez utiliser la commande + ps +:

# ps -ef | grep postgre

Vous devriez voir quelque chose comme ceci sur le terminal:

postgres 32164     1  0 21:58 ?        00:00:00 /usr/lib/postgresql/9.4/bin/postgres -D /var/lib/   postgresql/9.4/main -c config_file=/etc/postgresql/9.4/main/postgresql.conf
postgres 32166 32164  0 21:58 ?        00:00:00 postgres: checkpointer process
postgres 32167 32164  0 21:58 ?        00:00:00 postgres: writer process
postgres 32168 32164  0 21:58 ?        00:00:00 postgres: wal writer process
postgres 32169 32164  0 21:58 ?        00:00:00 postgres: autovacuum launcher process
postgres 32170 32164  0 21:58 ?        00:00:00 postgres: stats collector process

Succès! PostgreSQL a été installé avec succès et est en cours d’exécution.

Accéder à la base de données PostgreSQL

Sur Debian, PostgreSQL est installé avec un utilisateur et une base de données par défaut, tous deux nommés + postgres +. Pour vous connecter à la base de données, vous devez d’abord passer à l’utilisateur + postgres + en exécutant la commande suivante tout en étant connecté en tant que root (cela ne fonctionnera pas avec un accès sudo):

su - postgres

Vous devez maintenant être connecté en tant que + postgres +. Pour démarrer la console PostgreSQL, tapez + psql +:

psql

Terminé! Vous devez être connecté à la console PostgreSQL. Vous devriez voir l’invite suivante:

psql (9.4.2)
Type "help" for help.

postgres=#

Pour quitter la console psql, utilisez simplement la commande + \ q +.

Créer de nouveaux rôles

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 PostgreSQL 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, PostgreSQL est configuré pour utiliser l’authentification «ident», ce qui signifie qu’elle associe les rôles PostgreSQL à un compte système Unix / Linux correspondant. Si un rôle PostgreSQL existe, vous pouvez vous connecter en vous connectant au compte système Linux associé.

La procédure d’installation a créé un compte d’utilisateur appelé postgres associé au rôle Postgres par défaut.

Pour créer des rôles supplémentaires, nous pouvons utiliser la commande + createuser +. Notez que cette commande doit être émise en tant qu’utilisateur + postgres +, pas dans la console PostgreSQL:

createuser --interactive

Il s’agit d’un script shell interactif qui appelle les commandes PostgreSQL correctes pour créer un utilisateur conforme à vos spécifications. Il vous posera quelques questions: le nom du rôle, s’il doit s’agir d’un superutilisateur, si le rôle doit être capable de créer de nouvelles bases de données et s’il sera capable de créer de nouveaux rôles. La page + man + contient plus d’informations:

man createuser

Création d’une nouvelle base de données

PostgreSQL est configuré par défaut avec l’authentification des rôles demandés par les comptes système correspondants. (Vous pouvez obtenir plus d’informations à ce sujet sur postgresql.org). Cela 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 test1

La nouvelle base de données + test1 + est maintenant créée.

Connexion à PostgreSQL avec le nouvel utilisateur

Supposons que vous avez un compte Linux nommé + test1 +, que vous avez créé un rôle PostgreSQL + test1 + et que vous avez créé la base de données + test1 +. Pour changer le compte utilisateur sous Linux en + test1 +:

su - test1

Ensuite, connectez-vous à la base de données + test1 + en tant que rôle + test1 + PostgreSQL en utilisant la commande:

psql

Maintenant, vous devriez voir l’invite de PostgreSQL avec le nouvel utilisateur + test1 + au lieu de + postgres +.

Création et suppression de 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 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 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.

Pour en savoir plus sur la création et la gestion de tables dans Postgres, consultez la page https://www.digitalocean.com/community/tutorials/how-to-create-remove-manage-tables-in-postgresql-on-a-cloud. -server [Comment créer, supprimer et gérer des tables dans PostgreSQL sur un serveur cloud].

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, qui est du type de série. Ce type de données est un entier auto-incrémenté. Nous avons donné à cette colonne la contrainte de la 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.

Pour voir les tables, utilisez la commande + \ dt + à l’invite de commande psql. Le résultat serait similaire à

            List of relations
Schema |    Name    | Type  |  Owner
--------+------------+-------+----------
public | playground | table | postgres

Comme vous pouvez le constater, nous avons notre table de jeu.

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 les valeurs de colonne que vous entrez ont besoin de 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;

La sortie devrait être

equip_id | type  | color  | location  | install_date
----------+-------+--------+-----------+--------------
       1 | slide | blue   | south     | 2014-04-28
       2 | swing | yellow | northwest | 2010-08-16

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 casse et que nous la retirons de la cour de récréation, nous pouvons également supprimer la ligne de notre table en tapant:

DELETE FROM playground WHERE type = 'slide';

Si nous interrogeons à nouveau notre table:

SELECT * FROM playground;

Nous verrons que notre diapositive ne fait plus partie du tableau:

equip_id | type  | color | location | install_date
----------+-------+-------+----------+--------------
       1 | slide | blue  | south    | 2014-04-28

Commandes utiles

Voici quelques commandes qui peuvent vous aider à avoir une idée de votre environnement actuel:

  • * \? *: Obtenez une liste complète des commandes psql, y compris celles non répertoriées ici.

  • * \ h *: Obtenir de l’aide sur les commandes SQL. Vous pouvez suivre cette opération avec une commande spécifique pour obtenir de l’aide sur la syntaxe.

  • * \ q *: quittez le programme psql et quittez à l’invite Linux.

  • * \ d *: Répertorie les tables, vues et séquences disponibles dans la base de données actuelle.

  • * \ du *: Lister les rôles disponibles

  • * \ dp *: Liste des privilèges d’accès

  • * \ dt *: Liste des tables

  • * \ l *: Liste des bases de données

  • * \ c *: connectez-vous à une base de données différente. Suivez ceci par le nom de la base de données.

  • * \ mot de passe *: Modifiez le mot de passe pour le nom d’utilisateur qui suit.

  • * \ conninfo *: Obtenir des informations sur la base de données actuelle et la connexion.

Avec ces commandes, vous devriez être capable de naviguer rapidement dans les bases de données, les tables et les rôles PostgreSQL.

Conclusion

Vous devriez maintenant avoir une base de données PostgreSQL entièrement fonctionnelle et opérationnelle sur votre système Debian. Toutes nos félicitations! Il existe une pléthore de documentation à partir de là:

  • postgreSQL Manuals

  • Installation du paquetage + postgresql-doc +: '+ sudo apt-get install postgresql-doc + `

  • Le fichier + README + installé dans + / usr / share / doc / postgresql-doc-9.4 / tutorial / README +

Pour une liste complète des commandes SQL prises en charge dans PostgreSQL, suivez ce lien:

Pour comparer les différentes fonctionnalités des bases de données, vous pouvez vérifier:

Pour une meilleure compréhension des rôles et des autorisations, voir: