PostgreSQL - 2me partie - Linux Magazine France No 4

PostgreSQL 2ème partie

Avant de présenter les deux principaux frontaux graphiques disponibles pour PostgreSQL, nous devons nous replonger dans sa configuration : en effet, tant pgaccess que mpsql nécessitent que le serveur (postmaster) soit lancé de façon à accepter des connexions distantes via TCP/IP.

 

Introduction

Lors de notre premier article, nous nous étions limités à une utilisation "monoposte", où le serveur se trouvait sur la même machine que les programmes clients. Pour pouvoir utiliser PostgreSQL en réseau, peu de choses restent à faire :

il faut indiquer au serveur qu'il doit autoriser les connexions distantes via TCP/IP ;

il faut indiquer au serveur quelles seront les machines distantes autorisées à s'y connecter ;

il faut installer les programmes clients sur chacune des machines qui devront pouvoir interroger les bases de données créées sur le disque de la machine où tourne le serveur.

 

Configuration du serveur pour des connexions TCP/IP

Autoriser les connexions TCP/IP

Comme nous l'avons déjà écrit, les connexions distantes ne sont pas autorisées par défaut. Pour modifier cela et en profiter pour configurer d'autres paramètres, il suffit d'éditer le fichier /etc/postgresql/postmaster.init. Avant de le faire, passez sous le compte root et modifiez ses permissions car, par défaut, il est en lecture seule :

titine:/etc/postgresql# chmod +w postmaster.init

Le paramètre qui nous intéresse ici est PGALLOWTCPIP. Pour l'instant, la ligne le concernant est :

PGALLOWTCPIP=no

et il suffit de changer le no par yes.

En parcourant ce fichier, vous noterez que vous pouvez intervenir sur d'autres paramètres du fonctionnement de PostgreSQL. Voici celles que j'ai modifiées :

PGDATESTYLE=European

PGALLOWTCPIP=yes

PGPORT=5432

LANG=fr_FR

Puis, repositionnez les permissions initiales :

titine:/etc/postgresql# chmod -w postmaster.init

Pour que les modifications du fichier d'initialisation soient prises en compte, il faut relancer le serveur si celui-ci tournait déjà. Comme nous l'avons expliqué dans l'article précédent, le démarrage et l'arrêt de postmaster sont réalisés par le script postgresql, se trouvant dans le répertoire d'initialisation de votre système (/etc/init.d/ sur Debian).

titine:/etc/postgresql# /etc/init.d/postgresql restart

Restarting PostgreSQL postmaster

Stopped /usr/lib/postgresql/bin/postmaster (pid 143).

Starting PostgreSQL postmaster

Ça y est, votre serveur est prêt à accepter les connexions TCP/IP et vous pouvez donc utiliser les frontaux graphiques...

Autoriser les clients distants à se connecter

Désormais, votre serveur accepte les connexions TCP/IP. Mais, pour des raisons de sécurité, seuls les clients locaux (sur la même machine que le serveur) peuvent s'y connecter.

Supposons que le programme serveur (postmaster) tourne sur la machine zeus.monreseau.fr, que le réseau monreseau.fr ait pour adresse IP 198.162.2.0/24. Supposons également que nous voulions exécuter des requêtes via le client psql à partir de la machine clio.monreseau.fr et que le réseau est, par ailleurs, correctement configuré sur ces deux machines.

Supposons encore que la base mabase ait été créée par l'utilisateur dupont et que notre réseau utilise NIS : l'utilisateur dupont est donc connu sur toutes les machines.

Si dupont, à partir de clio, tente de faire :

$ psql -h zeus mabase

le serveur répondra qu'il n'est pas possible de s'y connecter...

Pour permettre les connexions distantes, il faut que root édite le fichier /etc/postgresql/pg_hba.env pour y ajouter la ligne suivante :

host all 192.168.2.0 255.255.255.0 ident sameuser

Cette ligne indique que tout utilisateur d'une machine du réseau 192.168.2.0 pourra se connecter à toutes les bases. Cet utilisateur sera vu par le serveur sous le nom où il s'est connecté sur la machine.

Vous remarquerez, en parcourant le fichier pg_hba.env que de nombreuses combinaisons sont possibles et je vous encourage à les tester...

Utiliser pgaccess

pgaccess est un frontal X11, écrit en tcl/tk permettant de faciliter certaines opérations sur les bases postgreSQL. Toutefois, ces bases doivent avoir été préalablement créées par createdb.

pgaccess est livré avec la distribution postgreSQL et s'invoque à partir d'un xterm via la commande pgaccess : (figure 1)

fig.1 fig.2

fig.3

Via le menu Database et son option Open, vous pourrez choisir le serveur (localhost si vous n'êtes pas en réseau), le nom de l'utilisateur et le nom de la base : (figure 2) À partir de ce moment, vous pouvez consulter la structure des tables de la base choisie (elles sont listées dans la fenêtre principale), visualiser leur contenu et leur ajouter de nouveaux tuples. Toutefois, l'interface est loin d'être finalisée. Sur ma machine, le fait de cliquer sur le nom d'une table la sélectionne, mais cette sélection n'est matérialisée par aucun effet visuel... (figure 3) Vous pouvez aussi créer de nouvelles tables à l'aide du bouton new : (figure 4) Les requêtes SQL peuvent être tapées directement en choisissant l'onglet Query et le bouton new, et le résultat d'une requête peut donner lieu à la création d'une vue en cochant le bouton adéquat. Enfin, le menu Database permet d'importer des données stockées dans un fichier texte pour remplir une table et d'exporter le contenu d'une table dans un fichier. Il s'agit là de frontaux aux commandes et de psql. Nous n'avons pas utilisé les autres possibilités de pgaccess (génération d'interfaces, de rapports, QBE...) car elles ne nous semblent pas encore finalisées.

fig.4

Utiliser mpsql

mpsql est une interface Motif pour psql : il n'est pas livré avec PostgreSQL et doit être téléchargé à partir de urlnam. Si vous le construisez à partir des sources, vous devrez posséder la bibliothèque Motif, et il en est de même si vous récupérez un binaire lié dynamiquement. Si vous n'avez pas Motif sur votre système, récupérez un binaire lié statiquement (figure 5) .mpsql se veut un simple frontal graphique de psql. Son concept est très simple : on entre une requête SQL dans la fenêtre supérieure et le résultat est produit dans la fenêtre inférieure. Ce résultat peut être sauvegardé dans un fichier et la totalité de la session peut être reportée dans un fichier de spool. Comme pour psql et pgaccess, il faut d'abord se connecter à une base de données. Par contre, il n'y a aucune fonctionnalité d'interface pour la création des tables, leur remplissage etc. Ce n'est vraiment que du SQL...

fig.5

La prochaine fois...

A présent, nous en savons suffisamment sur PostgreSQL pour créer des tables, effectuer des requêtes, bref nous amuser un peu, quoi...

Le mois prochain nous créerons donc une base de données qui nous servira à présenter SQL. Dans les épisodes suivants, si cela vous intéresse encore, nous intégrerons ces requêtes SQL dans un programme écrit en C et/ou en Perl.


© Copyright 2000 Diamond Editions/Linux magazine France. - Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1or any later version published by the Free Software Foundation; A copy of the license is included in the section entitled "GNU Free Documentation License".