Client dbeaver
Guide pour utiliser le client dBeaver avec un tunnel ssh
Installer
À partir de Dbeaver community edition
Survol
Explorer les possibilités du client dBeaver
ssh
Vous utiliserez dBeaver pour interroger le serveur Postgre via un tunnel ssh
. Pour établir ce tunnel reportez-vous à la page Connexion au serveur
Définir et utiliser un projet
Dans l’onglet Projets
(Menu Fenêtres
->Projet
), apparaît le projet Général
. Vous pouvez le renommer en faisant un clic droit.
Pour ce module, vous pouvez vous contenter d’utiliser un unique projet.
Si vous avez plusieurs projets, choisissez le projet actif en faisant un clic droit puis Définir le projet actif
.
Lors de la création d’un projet, décochez Utiliser l'emplacement par défaut
et choisissez le répertoire ou seront enregistrés vos scripts, c.a.d. vos requêtes SQL.
Dans votre projet apparaissent les éléments :
Connection
Bookmarks
Dashboards
Diagrams
Scripts
Connection
La première étape après la création d’un projet est la création d’une connexion à un serveur de bases de données.
Pour cet enseignement, vous devez d’abord créer un tunnel ssh
avec le serveur etu-pgsql.math.univ-paris-diderot.fr
avec une redirection de port (cf. Connexion au serveur).
Nous supposons par la suite que vous avez établi un tunnel en redirigeant le port local 5436
vers le port distant 5432
.
Il faut ensuite sélectionner votre projet dans l’onglet Projets
puis faire une clic droit et Créer
->Connexion
, choisir le pilote PostgreSQL (regarder les icônes), puis Suivant
et saisir dans le formulaire les informations suivantes :
- Onglet
Main
ouGénéral
- Connect by
Host
,- Host:
localhost
, - Port:
5436
(le nom du port local utilisé par votre tunnel ssh) - Database:
bd_2023-24
- Décocher
Show all databases
- Host:
- Authentification:
Database Native
- Username:
username
(ENT) - Password: xxxxxxx (ENT)
- Cocher
Save password
- Username:
- Connect by
Puis cliquer sur Terminer
. Eventuellement, dBeaver demandera à installer le pilote ‘PostgreSQL’.
Maintenant la connexion bd_2023-24
apparaît dans votre projet. Elle apparaît également dans le Navigateur de Bases de données
(Fenêtres
->Navigateur de Bases de données
).
En déroulant la connexion bd_2023-24
->Bases de données
->bd_2023-2024
->Schémas
, vous pouvez visualiser la liste des schémas existants sur le serveur.
Si vous créez un nouveau projet avec une connexion déjà définie dans un autre, il vous suffit de copier-coller la connexion entre les projets ou depuis le Navigateur de Bases de données
.
Bookmarks
/Signets
Vous pouvez jeter un coup d’oeil à cette documentation sur les signets.
Vous pouvez créer des signets pour retrouver facilement les schémas sur lesquels vous travaillez, ou avez travaillé.
Dashboards
/Tableaux de bord
Ils servent à superviser l’utilisation des ressources. Cela ne vous sera pas utile pour cet enseignement.
Diagrams
dBeaver permet de faire un peu de rétro-ingénieurie et de visualiser (partiellement) un schéma. Outil utile quand on veut retoucher un schéma ou simplement le comprendre.
Scripts
- Créer un dossier de script pour chaque TP puis un script pour chaque exercice,
- Nommer le script de façon utile (avec
rename
), - Commenter le script,
- Séparer les requêtes par des lignes blanches et une ligne de commentaire blanche
--
, - Utiliser le reformattage pour rendre votre code plus lisible.
Editeur SQL
Pour écrire vos requètes, il faut utiliser l’éditeur SQL.
Supposons que vous vouliez écrire une requète sur le schéma world
.
Dans votre projet, une fois créé le tunnel ssh
, faire un clic droit sur la connexion de votre projet puis Se connecter
. Si la connexion est réussie, une coche verte apparaît.
Si votre connexion échoue, c’est certainement parce que votre tunnel ssh
a été coupé à cause d’un temps d’inactivité trop long (erreur timed out
). Il faut revenir dans le terminal de la commande ssh
, faire un Ctrl C
si le prompt ssh
est toujours présent pour “tuer” le processus ssh
puis relancer la commande ssh
en utilisant l’historique des commandes du terminal (flèche vers le haut), enfin ressaisir votre mot de passe.
Vous pouvez éventuellement allonger le time out ssh en ajoutant l’option -o ConnectTimeout=1000
à la commande ssh
, ici le délai sera de 1000s (environ 15min).
Dans Connections
, vous pouvez dérouler bd_2023-24
->Bases de données
->bd_2023-2024
->Schémas
.
Dans la liste que vous avez déroulée, vous devez retrouver le schéma world
et double cliquer sur celui-ci. Cela vous permet d’afficher le schéma graphiquement ce qui vous aidera à écrire votre requète SQL.
Puis il faut aller dans le menu haut et cliquer sur Editeur SQL
->Context
->Définir la connexion active
. Choisissez la connexion de votre projet et valider en cliquant sur Select
.
Cliquez ensuite sur Editeur SQL
->Nouveau script
. Vous avez créé un nouveau fichier de script d’extension .sql
dans le répertoire par défaut de votre projet. Ce fichier apparaît dans dBeaver parmi les scripts du projet.
Vous pouvez maintenant écrire votre première requête.
En utilisant le schéma world
, on peut par exemple écrire une projection de la table country
sur les attributs name_country
et continent
:
-- Requête de projection
SELECT name_country, continent
FROM world.country
Ici, comme nous n’avons pas inclus world
dans le chemin par défaut, il est nécessaire de le préciser avec le nom de la table : world.country
.
Vous pouvez alors exécuter votre requète en cliquant sur le triangle orange ou avec un clic droit sur le code de la requête.
Pour alléger l’écriture des requêtes, il est préférable de commencer par écrire une requète qui définit le schéma par défaut :
-- Requête de définition du schéma par défaut
SET search_path TO world, public;
-- Requête de projection
SELECT name_country, continent
FROM country
Petit inconvénient : des tips infondés d’erreurs de nom de table apparaissent car l’éditeur ne peut pas savoir si vous avez exécuté la requète SET search_path
. Pour supprimer les tips d’erreur de nom de table de l’éditeur SQL, il faut aller dans Fenêtres
->Préférences
et décocher l’option Editors
->Editeur SQL
-> Code editor
->Read database table/columns for smeantic analysis
.