Installation Postgresql
sudo apt update sudo apt install postgresql postgresql-contrib
Lancer Postgresql en tant qu’utilisateur postgres
La procédure d'installation a créé un compte utilisateur nommé postgres qui est associé au rôle Postgres par défaut. Pour utiliser Postgres, vous pouvez vous connecter à ce compte.
sudo -u postgres psql
Quitter la session Postgres :
postgres=# \q
Rôles
Par défaut, Postgres utilise la notion de « rôles » pour gérer l'authentification et l'autorisation. Ils sont, à certains égards, semblables aux comptes classiques de type Unix, mais Postgres ne fait pas de distinction entre utilisateurs et groupes et préfère le terme plus souple de « rôle ».
Création d'un rôle
Alors que vous n'êtes pas loggé à une session postgres, entrez l'instruction suivante pour créer un nouveau rôle (utilisateur) :
sudo -u postgres createuser --interactive --pwprompt
Installation PGADMIN :
Tuto : https://computingforgeeks.com/how-to-install-pgadmin4-on-debian/
sudo apt install -y vim wget wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - RELEASE=$(lsb_release -cs) echo "deb http://apt.postgresql.org/pub/repos/apt/ ${RELEASE}"-pgdg main | sudo tee /etc/apt/sources.list.d/pgdg.list sudo apt update sudo apt -y install pgadmin4 pgadmin4-apache2 sudo ufw allow http sudo ufw allow https
Lancer pgadmin
Lancer le serveur comme un logiciel classique, cela va ouvrir votre navigateur par défaut à l’adresse :
http://127.0.0.1:39385/browser/
Création d'un "serveur" sous pgadmin
Au premier lancement de pgAdmin 4, un groupe de serveurs, vide, est paramétré. Cet objet apparaît dans le volet gauche de l’interface. L’objet groupe de serveurs dans pgAdmin, est un conteneur d’organisation de l’affichage. Il ne correspond pas à un objet réel du serveur de base de données. On va commencer par donner un nom significatif à cet objet:
Dans mon cas, j'ai appelé le nouveau serveur "memo".
... pour que cela fonctionne, il faut :
- renseigner l'adresse de l'host (localhost ici)
- avoir déjà créé un utilisateur (cf plus haut : yvan dans mon exemple) avec un mot de passe
Création d'une base de données
Au click droit sur "Database"
... donner le nom de la base de donnée (memo ici) ainsi que son propriétaire (yvan ici)
... l'ongelt "SQL" indique le code SQL qui sera exécuté
Créer un schema
Dans une première approche, un schéma peut être vu comme un espace de nommage. Il permet de regrouper ensemble des tables plutôt que d’avoir un espace unique les regroupant toutes. Le fait de placer des tables dans des schémas différents n’empêche en rien de les relier entre elles en créant des jointures ou des contraintes d’intégrité.
C’est déjà très bien : avec ce principe, il est possible de regrouper ensemble des tables qui sont fonctionnellement proches. Mais les schémas présentent également d’autres avantages. Il est ainsi possible d’indiquer des droits différents, et donc d’autoriser des opérations différentes selon les profils des utilisateurs.
Les schémas existent depuis probablement le début des bases de données relationnelles. Ils ont rarement été utilisés jusqu’ici, et certaines bases de données, comme MySql, ne disposent pas de cette finesse : les bases de données et les schémas sont fusionnés en un seul type d’objet, appelé schéma.
Créer une table
Créer des champs
Voir le SQL généré :
CREATE TABLE memo."user" ( u_id integer NOT NULL, u_email character(255) NOT NULL, u_pwd character(120) NOT NULL, PRIMARY KEY (u_id) ) WITH ( OIDS = FALSE ); ALTER TABLE memo."user" OWNER to yvan;
Création d'une clé étrangère
Cliquer droit sur le lien "Constraints > Create > Foreign Key"
Donnez un nom à votre clé étrangère
Faites le choix des champs à mettre en relation. Attention, il faut que :
- les deux tables existent déjà
- vous ayez déjà créer un champ adhoc (c_user ici) sur la table qui fait référence à l'id de la table étrangère
- vous n'oubliez pas de cliquer sur le bouton "+" en face de Columns
- vous n'oubliez pas de cliquer sur le bouton "save"
Code SQL généré :
ALTER TABLE memo.card ADD CONSTRAINT c_user FOREIGN KEY (c_user) REFERENCES memo."user" (u_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE RESTRICT NOT VALID; CREATE INDEX fki_c_user ON memo.card(c_user);
Insérer un enregistement (insert row or record)
Attention, avec la version de pgAdmin que j'utilise, le bouton de sauvegarde n'est pas évident à repérer (entouré en rouge dans l'image ci-dessous)
Exécuter une requête :
Ouvrir Tools > Query Tool
... puis écrire le code SQL et cliquer sur la flèche noire en haut à droite pour exécuter le code SQL :