Le document a été réalisé à partir de la version 10.04 d’Ubuntu, et 8.4 de Postgresql.
i postgresql - object-relational SQL database (supported
i A postgresql-8.4 - object-relational SQL database, version 8.
i postgresql-8.4-postgis - geographic objects support for PostgreSQL
i A postgresql-client-8.4 - front-end programs for PostgreSQL 8.4
i A postgresql-client-common - manager for multiple PostgreSQL client ver
i A postgresql-common - PostgreSQL database-cluster manager
i A postgresql-doc - documentation for the PostgreSQL database
i A postgresql-doc-8.4 - documentation for the PostgreSQL database
i postgis - geographic objects support for PostgreSQ
i phppgadmin - web-based administration tool for PostgreSQL
Éditez le fichier /etc/postgresql/8.4/main/pg_hba.conf, puis rajoutez les lignes suivantes :
# site 1
host all all 10.xx.xx.0/21 md5
# site 2
host all all 10.xx.xx.0/25 md5
Le test est réalisé à partir de l’adresse IP appelante.
Éditez le fichier /etc/postgresql/8.4/main/postgresql.conf :
# - Connection Settings -
listen_addresses = '*'
Il s’agit d’une interface web qui permet de manipuler la base de données. Si elle n’est pas aussi riche que PgAdmin III, elle est largement suffisante pour gérer les bases de données, donner les droits, ou exécuter des requêtes SQL.
L’installation du programme ne pose pas de problème particulier (paquetage phppgadmin), mais un certain nombre de paramétrages doivent être appliqués.
Modifier PhpPgAdmin pour le rendre accessible en mode web
Éditez le fichier /etc/apache2/conf.d/phppgadmin, et modifiez les lignes suivantes :
(...)
order deny,allow
#deny from all
#allow from 127.0.0.0/255.0.0.0 ::1/128
allow from all
(…)
Créer un compte root pour accéder à l’administration du SGBD
En étant connecté en super-administrateur dans le serveur (console SSH) :
su postgres
psql
CREATE USER root;
ALTER ROLE root WITH CREATEDB;
ALTER USER root WITH ENCRYPTED PASSWORD 'mot_de_passe';
ALTER ROLE root WITH SUPERUSER;
Modifier PhpPgAdmin pour inhiber le contrôle du compte root
Éditez le fichier /usr/share/phppgadmin/conf/config.inc.php :
$conf['extra_login_security'] = false;
Éditez le fichier /root/backupPgsql.sh :
#!/bin/bash
# Script de sauvegarde des bases de donnees postgresql
# informations de connexion dans le fichier .pgpass
FICHIER=/mnt/svburo/backup/postgresql.sql
LOG=/var/log/backupPgql.log
SUJET="Sauvegarde PostgreSQL sur svbdd"
date > $LOG
echo "sauvegarde vers "$FICHIER >>$LOG
pg_dumpall > $FICHIER 2>>$LOG
# Recuperation des messages de backup
cat $FICHIER|grep "PostgreSQL database" >>$LOG
ls -lh $FICHIER >> $LOG
date >> $LOG
mail -s "$SUJET" root <$LOG
puis :
chmod +x /root/backupPgsql.sh
et programmez son exécution dans le crontab :
crontab -e
00 18 * * * /root/backupPgsql.sh
La base de données a été créée au préalable, avec phppgadmin (ou tout autre outil équivalent).
Connectez-vous en root dans la machine, puis basculez vers le login postgres :
su postgres
lancez ensuite les commandes suivantes :
createlang plpgsql testsig
(testsig est le nom de la base de données)
psql -d testsig -f /usr/share/postgresql/8.4/contrib/postgis.sql
Intégrez les données dans la table spatial_ref_sys :
psql -d testsig -f /usr/share/postgresql/8.4/contrib/spatial_ref_sys.sql
Rajoutez ensuite les commentaires des fonctions :
psql -d testsig -f /usr/share/postgresql/8.4/contrib/postgis_comments.sql
Créez un utilisateur pour la base de données, et donnez-lui les droits complets (avec phppgadmin, par exemple).
Vériifiez que l’utilisateur de la base de données a bien accès aux tables spatial_ref_sys et geometry_columns
Déconnectez-vous ensuite de l’utilisateur postgres avec Ctrl D.
On peut vérifier que la mise à jour a bien fonctionné en :
vérifiant l’existence des tables geometry_columns et spatial_ref_sys
vérifiant l’existence de plusieurs dizaines de fonctions traitant de la géométrie, par exemple : _stasgeojson(integer, geometry, integer, integer)
Le site http://www.postgis.fr, en français, présente pas mal d’informations concernant Postgis. La documentation d’installation et d’utilisation de postgis, version 1.4, peut être consultée ici :http://www.postgis.fr/book/print/156
Pour connaître la version de Postgis installée :
SELECT PostGIS_full_version();
Indispensable pour savoir avec quelle version on travaille, notamment pour trouver la documentation adaptée...
Avec PostgreSQL, il n'est nativement pas possible de réaliser des requêtes portant sur plusieurs bases de données à la fois. Néanmoins, un outil complémentaire permet de rendre ce service : dblink. Dblink est un jeu de quelques fonctions qui s'occupent de gérer la connexion à une base de données distante, puis de récupérer les données pour les manipuler dans la base de données appelante.
Pour de plus amples informations, consultez la documentation PostgreSQL : http://www.postgresql.org/docs/8.4/static/dblink.html
Avec la version 8.4, l'installation s'effectue ainsi :
DbLink est composé de fonctions qui doivent être intégrées à la base de données qui doit accéder aux autres bases.
Le script SQL de création des fonctions est fourni avec le paquetage postgresql-contrib. Une fois installé, cherchez le fichier dblink.sql, puis tapez les commandes suivantes :
su postgres
psql -d database -f /usr/share/postgresql/8.4/contrib/dblink.sql
Le plus facile, c'est d'encapsuler DbLink dans une vue, qui pourra alors être manipulée très simplement avec des commandes SQL classiques.
Voici un exemple de script de création d'une vue utilisant DbLink :
CREATE OR REPLACE VIEW v_arrachage_parcelle AS
SELECT t1.iddossierparcelle, t1.iddossier, t1.nomparcelle, t1.numdepartement, t1.numcommune, t1.numsection, t1.numparcelle
FROM dblink('dbname=arrachage host=pgsql.local.draf-aquitaine.agri port=5432 user=login password=motDePasse',
'select iddossierparcelle, iddossier, nomparcelle, numdepartement, numcommune, numsection, numparcelle from v_parcelle'::text)
t1(iddossierparcelle integer, iddossier integer, nomparcelle text, numdepartement text, numcommune text, numsection text, numparcelle text);
ALTER TABLE v_arrachage_parcelle OWNER TO root;
GRANT ALL ON TABLE v_arrachage_parcelle TO root;
GRANT SELECT ON TABLE v_arrachage_parcelle TO "arrachage-Sig";
GRANT ALL ON TABLE v_arrachage_parcelle TO "sigGroupe";
Quelques explications...
Dans la commande FROM, le nom de la table est remplacé par un appel de la fonction dblink. La construction de cette fonction est réalisée en trois parties :
Compte-tenu de la lourdeur d'écriture, l'utilisation d'une vue est quand même plus simple que de monter des requêtes manuellement...
PGADMIN III est un logiciel fonctionnant avec Windows (ou Linux), qui permet de manipuler la base de données, ou de réaliser diverses opérations.
C’est un logiciel qui fonctionne avec des plugins, certains étant indispensables pour intégrer des fichiers externes, comme des shapefiles ou des données numériques.
Les plugins sont constitués :
d’un exécutable (au moins) ;
de paramètres d’exécution, qui sont insérés dans le fichier C :\Program Files\pgAdmin III\1.12\plugins.ini
Pour activer un plugin, il suffit d’installer le programme d’exécution dans le dossier d’installation de Pgadmin, puis de modifier le fichier plugins.ini en rajoutant les lignes correspondant au plugin considéré (lignes fournies avec le plugin).