Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
postgresql [Le 31/08/2022, 23:14] moths-art correction tirets doubles (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892) |
postgresql [Le 10/12/2024, 14:20] (Version actuelle) bcag2 [encodage UTF-8] par défaut car par défaut sous Ubuntu (+ v9 n'est plus supporté!) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | {{tag>sgbd serveur réseau BROUILLON}} | + | {{tag>sgbd serveur réseau programmation}} |
---- | ---- | ||
Ligne 121: | Ligne 121: | ||
^ \c nom_base nom_utilisateur | connecte à la base <nom_base> avec le rôle <nom_utilisateur>| | ^ \c nom_base nom_utilisateur | connecte à la base <nom_base> avec le rôle <nom_utilisateur>| | ||
^ \lt | liste les tables de la base courante| | ^ \lt | liste les tables de la base courante| | ||
- | ^ set search_path to <mon_schéma>; | intéressant à faire avant la commande ci-dessous !-)| | + | ^ set search_path to mon_schema1, mon_schema2; | intéressant à faire avant la commande ci-dessous !-)| |
- | ^ \d | liste les tables du schéma courant| | + | ^ \d | liste les tables du ou des schéma·s courant·s| |
^ \d nom_table_ou_vue | description de la table <nom_table> (colonne, type…) ou de la vue nom_vue| | ^ \d nom_table_ou_vue | description de la table <nom_table> (colonne, type…) ou de la vue nom_vue| | ||
^ \d+ nom_table_ou_vue | description complète (avec commentaires!) de la table <nom_table> (colonne, type…) ou de la vue nom_vue avec son code source| | ^ \d+ nom_table_ou_vue | description complète (avec commentaires!) de la table <nom_table> (colonne, type…) ou de la vue nom_vue avec son code source| | ||
Ligne 128: | Ligne 128: | ||
^ \dn | liste tout le schéma de la base courante| | ^ \dn | liste tout le schéma de la base courante| | ||
^ \h ALTER TABLE | affiche l'aide pour la commande ALTER TABLE| | ^ \h ALTER TABLE | affiche l'aide pour la commande ALTER TABLE| | ||
+ | |||
+ | Pour lister les schémas : | ||
+ | <code sql> | ||
+ | select *from pg_namespace; | ||
+ | </code> | ||
Pour lister les tables d'un schéma : | Pour lister les tables d'un schéma : | ||
Ligne 150: | Ligne 155: | ||
WHERE routines.specific_schema='monSchema' | WHERE routines.specific_schema='monSchema' | ||
ORDER BY routines.routine_name, parameters.ordinal_position; | ORDER BY routines.routine_name, parameters.ordinal_position; | ||
+ | </code> | ||
+ | |||
+ | Lister les droits (//\du// est très limité !) : | ||
+ | <code> | ||
+ | select grantee, table_catalog, table_schema, table_name, string_agg(privilege_type, ', ' order by privilege_type) as privileges from information_schema.role_table_grants where grantee != 'postgres' group by grantee, table_catalog, table_schema, table_name; | ||
+ | </code> | ||
+ | |||
+ | et si besoin : | ||
+ | <code sql> | ||
+ | REVOKE ALL ON SCHEMA mon_schema FROM mon_role; | ||
</code> | </code> | ||
====Supprimer l'utilisateur Postgres du greeter sous xubuntu 14.04.1==== | ====Supprimer l'utilisateur Postgres du greeter sous xubuntu 14.04.1==== | ||
Ligne 195: | Ligne 210: | ||
... | ... | ||
</code> | </code> | ||
- | Puis redémarrez le serveur PostgreSQL: | + | Puis redémarrez le serveur PostgreSQL: |
<code> | <code> | ||
$ sudo service postgresql restart | $ sudo service postgresql restart | ||
Ligne 211: | Ligne 226: | ||
sudo pg_createcluster 9.3 main | sudo pg_createcluster 9.3 main | ||
</code> | </code> | ||
- | Puis redémarrez le serveur PostgreSQL: | + | Puis redémarrez le serveur PostgreSQL: |
<code> | <code> | ||
$ sudo service postgresql restart | $ sudo service postgresql restart | ||
Ligne 217: | Ligne 232: | ||
Vous pouvez maintenant reprendre le tutoriel au début de la section "L'utilisateur postgres". | Vous pouvez maintenant reprendre le tutoriel au début de la section "L'utilisateur postgres". | ||
==== encodage UTF-8 ==== | ==== encodage UTF-8 ==== | ||
- | <note tips> Ce paragraphe est optionnel </note> | + | Postgresql se base sur la configuration du système d'exploitation… qui est en UTF-8 par défaut sous les versions francophone d'Ubuntu. |
- | FIXME En version PostgreSQL 9.1.5, l'installateur semble avoir directement créé avec le bon codage. Cette opération semble donc être devenue inutile. | + | |
- | + | ||
- | L'installateur initialise le cluster postgresql avec le support de jeux de caractères SQL_ASCII | + | |
- | + | ||
- | Pour ceux qui souhaitent privilégier l'encodage **UTF-8** / locale **FR-fr**, il faut supprimer le cluster et le recréer. | + | |
- | + | ||
- | === jeux de caractères par défaut === | + | |
- | * Connexion en tant qu'utilisateur postgres | + | |
- | + | ||
- | sudo -i -u postgres | + | |
- | + | ||
- | psql -l | + | |
- | List of databases | + | |
- | Name | Owner | Encoding | Collate | Ctype | Access privileges | + | |
- | ----------+----------+-----------+---------+-------+----------------------- | + | |
- | postgres | postgres | SQL_ASCII | C | C | | + | |
- | template0 | postgres | SQL_ASCII | C | C | =c/postgres + | + | |
- | | | | | | postgres=CTc/postgres | + | |
- | template1 | postgres | SQL_ASCII | C | C | =c/postgres + | + | |
- | | | | | | postgres=CTc/postgres | + | |
- | + | ||
- | === supprimer le cluster et le recréer === | + | |
- | + | ||
- | * Identifier la version et le nom de votre cluster | + | |
- | <code> | + | |
- | $ pg_lsclusters | + | |
- | Version Cluster Port Status Owner Data directory Log file | + | |
- | 9.1 main 5432 online postgres /var/lib/postgresql/9.1/main /var/log/postgresql/postgresql-9.1-main.log | + | |
- | </code> | + | |
- | * Supprimer le cluster | + | |
- | + | ||
- | pg_dropcluster 9.1 main --stop | + | |
- | + | ||
- | * Créer le cluster | + | |
- | + | ||
- | pg_createcluster --locale fr_FR.UTF-8 9.1 main | + | |
- | + | ||
- | * Démarrage | + | |
- | + | ||
- | pg_ctlcluster 9.1 main start | + | |
- | + | ||
- | Les bases systèmes seront alors conformes aux locales système | + | |
- | <code> | + | |
- | $ psql -l | + | |
- | List of databases | + | |
- | Name | Owner | Encoding | Collate | Ctype | Access privileges | + | |
- | ----------+----------+----------+-------------+-------------+----------------------- | + | |
- | postgres | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | | + | |
- | template0 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres + | + | |
- | | | | | | postgres=CTc/postgres | + | |
- | template1 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres + | + | |
- | | | | | | postgres=CTc/postgres | + | |
- | </code> | + | |
==== Créer un utilisateur PostgreSQL ==== | ==== Créer un utilisateur PostgreSQL ==== | ||
Ligne 314: | Ligne 275: | ||
</code> | </code> | ||
- | La ligne de commande est devenue : | + | La ligne de commande est devenue : |
<code> | <code> | ||
nom_base_de_donnee=> | nom_base_de_donnee=> | ||
Ligne 334: | Ligne 295: | ||
Il faut d'abord modifier le fichier de configuration pour autoriser les connexions via mot de passe chiffré (sur les versions récentes, au moins la 12, ça ne semble pas nécessaires) : | Il faut d'abord modifier le fichier de configuration pour autoriser les connexions via mot de passe chiffré (sur les versions récentes, au moins la 12, ça ne semble pas nécessaires) : | ||
- | <code> | + | <code bash> |
sudo nano /etc/postgresql/x.x/main/pg_hba.conf | sudo nano /etc/postgresql/x.x/main/pg_hba.conf | ||
</code> | </code> | ||
Ligne 344: | Ligne 305: | ||
<note important>Si vous modifiez les paramètres de la sécurité, avant de relancer postgresql pensez à donner un mot de passe à l'utilisateur postgres (voir plus bas)</note> | <note important>Si vous modifiez les paramètres de la sécurité, avant de relancer postgresql pensez à donner un mot de passe à l'utilisateur postgres (voir plus bas)</note> | ||
- | Modifier le fichier en remplaçant **ident sameuser** par **md5** afin d'obtenir les lignes suivantes : | + | Modifier le fichier en remplaçant **ident sameuser** par **md5** afin d'obtenir les lignes suivantes : |
- | <code> | + | <code bash> |
... | ... | ||
# Database administrative login by Unix domain socket | # Database administrative login by Unix domain socket | ||
Ligne 364: | Ligne 325: | ||
La modification des paramètres de connexion au serveur nécessite son redémarrage pour que ces derniers soient pris en compte. | La modification des paramètres de connexion au serveur nécessite son redémarrage pour que ces derniers soient pris en compte. | ||
- | <code> | + | <code bash> |
$ sudo service postgresql restart | $ sudo service postgresql restart | ||
</code> | </code> | ||
ou | ou | ||
- | <code> | + | <code bash> |
$ sudo pg_ctlcluster 9.5 main restart | $ sudo pg_ctlcluster 9.5 main restart | ||
</code> | </code> | ||
Ligne 374: | Ligne 335: | ||
On peut ensuite créer notre utilisateur : | On peut ensuite créer notre utilisateur : | ||
- | <code> | + | <code bash> |
$ sudo -i -u postgres | $ sudo -i -u postgres | ||
$ createuser -P --interactive <nom_utilisateur> | $ createuser -P --interactive <nom_utilisateur> | ||
Ligne 385: | Ligne 346: | ||
Puis, on lui crée une base de données dédiée : | Puis, on lui crée une base de données dédiée : | ||
- | <code> | + | <code bash> |
$ createdb -O <nom_utilisateur> -E UTF8 <ma_database> | $ createdb -O <nom_utilisateur> -E UTF8 <ma_database> | ||
</code> | </code> | ||
Ligne 394: | Ligne 355: | ||
L'option //-O <nom_utilisateur>// est là pour préciser l'identité du propriétaire de la base <ma_database>. | L'option //-O <nom_utilisateur>// est là pour préciser l'identité du propriétaire de la base <ma_database>. | ||
</note> | </note> | ||
- | |||
Ensuite, on peut se connecter via : | Ensuite, on peut se connecter via : | ||
- | <code> | + | <code bash> |
$ psql -U <nom_utilisateur> | $ psql -U <nom_utilisateur> | ||
- | Mot de passe pour l'utilisateur <nom_utilisateur> : | + | Mot de passe pour l’utilisateur <nom_utilisateur> : |
</code> | </code> | ||
- | ou, si le nom de la base de l'utilisateur n'est pas le même que celui de l'utilisateur : | + | ou, si le nom de la base de l'utilisateur n'est pas le même que celui de l'utilisateur : |
- | <code> | + | <code bash> |
$ psql -U <nom_utilisateur> <nom_database_de_l_utilisateur> | $ psql -U <nom_utilisateur> <nom_database_de_l_utilisateur> | ||
- | Mot de passe pour l'utilisateur <nom_utilisateur> : | + | Mot de passe pour l’utilisateur <nom_utilisateur> : |
</code> | </code> | ||
Ligne 413: | Ligne 373: | ||
== Les variables d'environnement == | == Les variables d'environnement == | ||
Les [[http://docs.postgresqlfr.org/9.0/libpq-envars.html|variables d'environnement]] sont utilisées pour sélectionner des valeurs par défaut pour les paramètres de connexion. | Les [[http://docs.postgresqlfr.org/9.0/libpq-envars.html|variables d'environnement]] sont utilisées pour sélectionner des valeurs par défaut pour les paramètres de connexion. | ||
- | Les plus intéressantes à utiliser son PGUSER et PGHOST (notamment pour cette dernière si vous administrez une base qui n'est pas sur un serveur //localhost//). | + | Les plus intéressantes à utiliser son //PGUSER// et //PGHOST// (notamment pour cette dernière si vous administrez une base qui n'est pas sur un serveur //localhost//). |
Pour que ces variables soient systématiquement disponibles dans votre shell de commandes, il faut les ajouter dans le fichier ~/.profile correspondant à votre utilisateur. | Pour que ces variables soient systématiquement disponibles dans votre shell de commandes, il faut les ajouter dans le fichier ~/.profile correspondant à votre utilisateur. | ||
- | Les lignes à ajouter sont (à vous de défionir les variables à ajouter): | + | Les lignes à ajouter sont (à vous de définir les variables à ajouter): |
+ | <code bash> | ||
export PGHOST=<nom_hôte> | export PGHOST=<nom_hôte> | ||
export PGUSER=<nom_utilisateur> | export PGUSER=<nom_utilisateur> | ||
... | ... | ||
- | + | </code> | |
- | La variable PGUSER étant ainsi définie, votre connexion peut alors se résumer à | + | |
+ | La variable //PGUSER// étant ainsi définie, votre connexion peut alors se résumer à | ||
+ | <code bash> | ||
psql <nom_database> | psql <nom_database> | ||
+ | </code> | ||
et si vous définissez PGDATABASE, votre connexion express sera simplement | et si vous définissez PGDATABASE, votre connexion express sera simplement | ||
+ | <code bash> | ||
psql | psql | ||
+ | </code> | ||
<note> | <note> | ||
il faut toujours saisir le mot de passe correspondant à l'utilisateur. Une variable PGPASSWORD existe, mais pour des raisons de sécurité, il est vivement recommandé de ne pas en faire usage. | il faut toujours saisir le mot de passe correspondant à l'utilisateur. Une variable PGPASSWORD existe, mais pour des raisons de sécurité, il est vivement recommandé de ne pas en faire usage. | ||
</note> | </note> | ||
- | |||
== Le fichier .pgpass == | == Le fichier .pgpass == | ||
Ligne 436: | Ligne 401: | ||
Ce fichier n'existe pas par défaut, il vous faut donc le créer. | Ce fichier n'existe pas par défaut, il vous faut donc le créer. | ||
nano ~/.pgpass | nano ~/.pgpass | ||
- | Son contenu est simplement défini par les chaînes de connexions à utiliser. | + | Son contenu est simplement défini par les chaînes de connexions à utiliser. |
localhost:5432:*:nomutilisateur:motdepasse | localhost:5432:*:nomutilisateur:motdepasse | ||
Ceci indiquera à votre client psql que l'utilisateur //nomutilisateur// accompagné du mot de passe //modepasse// est à utiliser pour la connexion à toutes //*// les bases de données de votre serveur //localhost// sur le port //5432// (port standard postgresql). | Ceci indiquera à votre client psql que l'utilisateur //nomutilisateur// accompagné du mot de passe //modepasse// est à utiliser pour la connexion à toutes //*// les bases de données de votre serveur //localhost// sur le port //5432// (port standard postgresql). | ||
Ligne 443: | Ligne 408: | ||
Et la sécurité ? | Et la sécurité ? | ||
si vous tentez une connexion | si vous tentez une connexion | ||
+ | <code bash> | ||
psql <nom_database> | psql <nom_database> | ||
+ | |||
WARNING: password file "/home/<user>/.pgpass" has group or world access; permissions should be u=rw (0600) or less | WARNING: password file "/home/<user>/.pgpass" has group or world access; permissions should be u=rw (0600) or less | ||
+ | </code> | ||
La limitation des droits d'accès à ce fichier est recommandée | La limitation des droits d'accès à ce fichier est recommandée | ||
+ | <code bash> | ||
chmod 0600 ~/.pgpass. | chmod 0600 ~/.pgpass. | ||
+ | </code> | ||
=== Personnalisation === | === Personnalisation === | ||
Ligne 461: | Ligne 430: | ||
Ces quelques paramètres doivent suffire dans la majorité des cas. Si vous souhaitez aller plus loin dans le tuning de PostgreSQL, je vous conseille d'aller voir là [[http://docs.postgresqlfr.org|documentation PostgreSQL]] (qui existe en français) | Ces quelques paramètres doivent suffire dans la majorité des cas. Si vous souhaitez aller plus loin dans le tuning de PostgreSQL, je vous conseille d'aller voir là [[http://docs.postgresqlfr.org|documentation PostgreSQL]] (qui existe en français) | ||
- | |||
- | |||
=== Rôles et droits === | === Rôles et droits === | ||
Ligne 485: | Ligne 452: | ||
Différentes contributions sont disponibles (cf la [[http://docs.postgresqlfr.org/9.1/contrib.html|documentation PostgreSQL]]). Leur installation (et désinstallation) est facilitée par l'existence de paquets dédiés | Différentes contributions sont disponibles (cf la [[http://docs.postgresqlfr.org/9.1/contrib.html|documentation PostgreSQL]]). Leur installation (et désinstallation) est facilitée par l'existence de paquets dédiés | ||
- | <code> | + | <code bash> |
sudo apt-get install postgresql-contrib | sudo apt-get install postgresql-contrib | ||
Les paquets supplémentaires suivants seront installés : | Les paquets supplémentaires suivants seront installés : | ||
Ligne 493: | Ligne 460: | ||
Les scripts permettant l'application de ces extensions sont disponibles dans **/usr/share/postgresql/9.1/extension/*.sql** | Les scripts permettant l'application de ces extensions sont disponibles dans **/usr/share/postgresql/9.1/extension/*.sql** | ||
L'ajout se fait par exécution du script concerné sur la base de données souhaitée. | L'ajout se fait par exécution du script concerné sur la base de données souhaitée. | ||
- | <code> | + | <code bash> |
$ psql -U <nom_utilisateur> <nom_database> -f /usr/share/postgresql/9.1/extension/<nom_extension>.sql | $ psql -U <nom_utilisateur> <nom_database> -f /usr/share/postgresql/9.1/extension/<nom_extension>.sql | ||
</code> | </code> | ||
Ligne 500: | Ligne 467: | ||
Pour ne permettre seulement une consultation des données par un utilisateur sans droit de modification, il faut exécuter la requête suivante: | Pour ne permettre seulement une consultation des données par un utilisateur sans droit de modification, il faut exécuter la requête suivante: | ||
- | <code> | + | <code sql> |
ALTER USER <nom_utilisateur> set default_transaction_read_only = on; | ALTER USER <nom_utilisateur> set default_transaction_read_only = on; | ||
</code> | </code> | ||
Ligne 527: | Ligne 494: | ||
PgAdmin III est un outil graphique d'administration de votre serveur PostgreSQL. L'application pgAdmin III peut être utilisé pour administrer les serveurs PostgreSQL 7.3 et les versions supérieures. PgAdmin III existe pour toutes les plateformes dont, évidemment, Ubuntu, KUbuntu, XUbuntu. | PgAdmin III est un outil graphique d'administration de votre serveur PostgreSQL. L'application pgAdmin III peut être utilisé pour administrer les serveurs PostgreSQL 7.3 et les versions supérieures. PgAdmin III existe pour toutes les plateformes dont, évidemment, Ubuntu, KUbuntu, XUbuntu. | ||
- | PgAdmin III a été conçu pour répondre aux besoins de tous les utilisateurs, depuis la rédaction de simple requêtes SQL au développement complexe de base de données. L'interface graphique supporte toutes les fonctionnalités de PostGreSQL et permet une administration simple. L'application inclut aussi un éditeur de requête avec coloration syntaxique, un éditeur de code, un agent de gestion de tâche automatique, un support pour les réplication via Slony-I et bien d'autres fonctionnalités. | + | PgAdmin III a été conçu pour répondre aux besoins de tous les utilisateurs, depuis la rédaction de simple requêtes SQL au développement complexe de base de données. L'interface graphique supporte toutes les fonctionnalités de PostGreSQL et permet une administration simple. L'application inclut aussi un éditeur de requête avec coloration syntaxique, un éditeur de code, un agent de gestion de tâche automatique, un support pour les réplication via Slony-I et bien d'autres fonctionnalités. |
== Installation du client pgadmin3 == | == Installation du client pgadmin3 == | ||
Ligne 536: | Ligne 503: | ||
Cela va également installer les paquets suivants : | Cela va également installer les paquets suivants : | ||
* libpq4 | * libpq4 | ||
- | * libwxbase2.6-0 | + | * libwxbase2.6-0 |
* libwxgtk2.6-0 | * libwxgtk2.6-0 | ||
* pgadmin3-data | * pgadmin3-data | ||
Ligne 546: | Ligne 513: | ||
== Lancement du client pgadmin3 == | == Lancement du client pgadmin3 == | ||
- | Sous Ubuntu, pour lancer PgAdmin III, aller dans le menu **Applications** => **programmation** => **pgAdmin III** | + | Sous Ubuntu, pour lancer PgAdmin III, aller dans le menu **Applications** => **programmation** => **pgAdmin III** |
<note>**Remarque:** | <note>**Remarque:** | ||
Ligne 617: | Ligne 584: | ||
====Pool de connexion : PgBouncer==== | ====Pool de connexion : PgBouncer==== | ||
[[pgbouncer|PgBouncer]] | [[pgbouncer|PgBouncer]] | ||
- | ===== Récupération du contenu d'une base de données après un crash serveur ===== | + | ===== Sauvegarde et Restauration ===== |
+ | Il est conseillé de lire le support de [[#formations|formation]] //PostgreSQL Administration (DBA1)// qui contient les chapitres //Politique de sauvegarde// et //Sauvegarde et restauration//\\ | ||
+ | On pourra lire aussi [[https://cyber.gouv.fr/sites/default/files/document/anssi-fondamentaux-sauvegarde_systemes_dinformation_v1-0.pdf|SAUVEGARDE DES SYSTÈMES D’INFORMATION − LES FONDAMENTAUX]] de l’ANSII | ||
+ | |||
+ | ==== PgDump ==== | ||
+ | |||
+ | ==== pgBackRest ==== | ||
+ | Le site officiel [[https://pgbackrest.org|pgBackRest]] et [[https://ng-pe.github.io/pgbackrest_doc_fr/user-guide.html|le guide utilisateur traduit]] | ||
+ | |||
+ | === Installation === | ||
+ | Simplement | ||
+ | <code bash> | ||
+ | sudo apt install pgbackrest | ||
+ | </code> | ||
+ | ==== Récupération du contenu d'une base de données après un crash serveur ==== | ||
Supposons que vous ayez installé sous [[ubuntu_server|ubuntu server]] une application d'entreprise s'appuyant sur une base de données postgresql (cette procédure a été testée avec [[redmine|redmine]]), et qu'un crash se produise qui rende impossible de redémarrer le serveur. Se pose alors le problème de la récupération des données. La procédure est relativement simple. Il va vous falloir: | Supposons que vous ayez installé sous [[ubuntu_server|ubuntu server]] une application d'entreprise s'appuyant sur une base de données postgresql (cette procédure a été testée avec [[redmine|redmine]]), et qu'un crash se produise qui rende impossible de redémarrer le serveur. Se pose alors le problème de la récupération des données. La procédure est relativement simple. Il va vous falloir: | ||
* Monter votre ancienne installation depuis une autre installation ou via un live cd | * Monter votre ancienne installation depuis une autre installation ou via un live cd | ||
Ligne 680: | Ligne 661: | ||
===== Voir aussi ===== | ===== Voir aussi ===== | ||
* [[https://www.pgmodeler.io|PgModeler]] qui permet de définir le modèle et générer les scripts de mise à jour de la base postgresql, installable depuis les dépôts <code bash>sudo apt install pgmodeler</code> | * [[https://www.pgmodeler.io|PgModeler]] qui permet de définir le modèle et générer les scripts de mise à jour de la base postgresql, installable depuis les dépôts <code bash>sudo apt install pgmodeler</code> | ||
+ | * (en) [[https://labs.dalibo.com/temboard|temboard]] outils de supervision et configuration d'instances Postgresql | ||
---- | ---- | ||
//Contributeurs : [[utilisateurs:yannick_LM|Yannick]], [[utilisateurs:sparky|Sparky]], [[utilisateurs:elemmire|Elemmire]], [[utilisateurs:aldian|Aldian]], [[utilisateurs:fred|Fred]], [[utilisateurs:xavierjm|XAVIER_jean-marie]], [[utilisateurs:bcag2|bcag2]] // | //Contributeurs : [[utilisateurs:yannick_LM|Yannick]], [[utilisateurs:sparky|Sparky]], [[utilisateurs:elemmire|Elemmire]], [[utilisateurs:aldian|Aldian]], [[utilisateurs:fred|Fred]], [[utilisateurs:xavierjm|XAVIER_jean-marie]], [[utilisateurs:bcag2|bcag2]] // |