{"id":46,"date":"2006-09-20T10:56:18","date_gmt":"2006-09-20T08:56:18","guid":{"rendered":"http:\/\/www.dotmana.com\/index.php\/?p=46"},"modified":"2006-09-20T10:56:18","modified_gmt":"2006-09-20T08:56:18","slug":"installation-et-configuration-de-postgresql","status":"publish","type":"post","link":"https:\/\/www.dotmana.com\/weblog\/2006\/09\/installation-et-configuration-de-postgresql\/","title":{"rendered":"Installation et configuration de PostgreSQL"},"content":{"rendered":"<p>Un autre tuto tr\u00e8s bien \u00e9crit :<\/p>\n<blockquote><p>Ce document me sert de m\u00e9mo pour installer la base de donn\u00e9es PostgreSQL sur une Debian Testing (Etch). Ce m\u00e9mo a \u00e9t\u00e9 test\u00e9 sous Debian Testing, mais il doit \u00eatre possible de l\u2019adapter facilement aux autres distributions Linux.<\/p>\n<p>PostgreSQL est moins connue et moins utilis\u00e9e que MySQL, pourtant cette base \u00e0 des fonctionnalit\u00e9s tr\u00e8s int\u00e9ressantes qui la rend comparable aux bases de donn\u00e9es commerciales comme Oracle ou DB2.<\/p>\n<p>Pr\u00e9-requis<\/p>\n<p>Pour installer PostgreSQL, il faut installer une Debian Testing de base :<br \/>\n&#8211;\u00a0 http:\/\/www.coagul.org\/article.php3 ?id_article=158<\/p>\n<p>Installation<\/p>\n<p>Paquets \u00e0 installer :<\/p>\n<p># aptitude install postgresql-8.1<\/p>\n<p>Lors de l\u2019installation, l\u2019utilisateur \u00ab\u00a0 postgres\u00a0 \u00bb est cr\u00e9\u00e9 automatiquement. Par d\u00e9faut, le mot de passe de cet utilisateur n\u2019est pas connu. Je conseil de lui en affecter un car cela permet de passer sous l\u2019utilisateur \u00ab postgres \u00bb sans passer par l\u2019utilisateur \u00ab root \u00bb :<\/p>\n<p># passwd postgres<\/p>\n<p>Pour travailler sur la base de donn\u00e9es, il faut commencer par se connecter sous le compte de ce nouvel utilisateur :<\/p>\n<p># su postgres<\/p>\n<p>psql : Interface en ligne de commande pour acc\u00e9der \u00e0 PostgreSQL<\/p>\n<p>La commande \u00ab\u00a0 psql\u00a0 \u00bb est une interface en ligne de commandes permettant d\u2019acc\u00e9der et de manipuler une base de donn\u00e9es PostgreSQL.<\/p>\n<p>La commande suivante, qu\u2019il faut toujours saisir sous le compte \u00ab\u00a0 postgres\u00a0 \u00bb, permet de se connecter \u00e0 la base de donn\u00e9es \u00ab\u00a0 template1\u00a0 \u00bb install\u00e9e par d\u00e9faut :<\/p>\n<p>$ psql template1<\/p>\n<p>Une fois dans l\u2019interface, voici quelques commandes utiles :<br \/>\n&#8211;\u00a0 \\ ? : Donne la liste des commandes<br \/>\n&#8211;\u00a0 \\h : Donne la liste des commandes SQL<br \/>\n&#8211;\u00a0 \\h SELECT : Donne une aide sur la commande SQL SELECT<br \/>\n&#8211;\u00a0 \\l : Donne la liste des bases de donn\u00e9es.<br \/>\n&#8211;\u00a0 \\q : Pour sortir de l\u2019interface.<\/p>\n<p>La commande suivante, permet par exemple de conna\u00eetre la liste des bases de donn\u00e9es :<\/p>\n<p>$ psql -l<\/p>\n<p>Gestion des droits d\u2019acc\u00e8s \u00e0 PostgreSQL<\/p>\n<p>Par d\u00e9faut, pour acc\u00e9der \u00e0 PostgreSQL, il faut se connecter sous l\u2019utilisateur \u00ab\u00a0 postgres\u00a0 \u00bb. Pour cr\u00e9er un nouvel utilisateur, il faudrait commencer par lui cr\u00e9er un compte sur le syst\u00e8me, ce qui n\u2019est peut-\u00eatre pas souhaitable. Pour changer cette configuration, il faut modifier le fichier \u00ab \/etc\/postgresql\/pg_hba.conf \u00bb et mettre \u00ab\u00a0 password\u00a0 \u00bb \u00e0 la place de \u00ab\u00a0 ident sameuser\u00a0 \u00bb sur les deux lignes suivantes :<br \/>\nlocal\u00a0 all\u00a0\u00a0\u00a0\u00a0 all\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ident sameuser<br \/>\nhost\u00a0\u00a0 all\u00a0\u00a0\u00a0\u00a0 all\u00a0\u00a0\u00a0 127.0.0.1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 255.255.255.255\u00a0\u00a0 ident sameuser<\/p>\n<p>ce qui donne :<br \/>\nlocal\u00a0 all\u00a0\u00a0\u00a0\u00a0 all\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 password<br \/>\nhost\u00a0\u00a0 all\u00a0\u00a0\u00a0\u00a0 all\u00a0\u00a0\u00a0 127.0.0.1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 255.255.255.255\u00a0\u00a0 password<\/p>\n<p>Cette modification permet d\u2019\u00e9viter de passer par des comptes du syst\u00e8me et oblige \u00e0 fournir un mot de passe \u00e0 chaque connexion.<\/p>\n<p>Cr\u00e9ation d\u2019un nouvel utilisateur<\/p>\n<p>La commande \u00ab\u00a0 createuser\u00a0 \u00bb toujours sous le compte \u00ab postgres \u00bb, permet de cr\u00e9er un nouvel utilisateur :<br \/>\n$ createuser toto<br \/>\nShall the new role be a superuser? (y\/n) n<br \/>\nShall the new role be allowed to create databases? (y\/n) y<br \/>\nShall the new role be allowed to create more new roles? (y\/n) n<br \/>\nCREATE ROLE<\/p>\n<p>Par d\u00e9faut le nouvel utilisateur n\u2019a pas de mot de passe et il n\u2019est donc pas encore possible de l\u2019utiliser. La commande suivante, permet de d\u00e9finir ce mot de passe :<\/p>\n<p>$ psql -d template1 -c &#8220;alter user toto with password &#8216;motdepasse'&#8221;<\/p>\n<p>La commande suivante, permet de v\u00e9rifier que cet utilisateur est correctement reconnu :<br \/>\n$ psql -l -U toto<br \/>\nMot de passe :<br \/>\nListe des bases de donn\u00e9es<br \/>\nNom\u00a0\u00a0\u00a0 | Propri\u00e9taire | Encodage<br \/>\n&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;-<br \/>\ntemplate0 | postgres\u00a0\u00a0\u00a0\u00a0 | LATIN9<br \/>\ntemplate1 | postgres\u00a0\u00a0\u00a0\u00a0 | LATIN9<\/p>\n<p>Cr\u00e9ation d\u2019une base de donn\u00e9es<\/p>\n<p>La commande suivante, permet de cr\u00e9er la base de donn\u00e9es \u00ab mabase\u00a0 \u00bb pour l\u2019utilisateur \u00ab\u00a0 toto\u00a0 \u00bb en utilisant l\u2019encodage \u00ab\u00a0 UNICODE\u00a0 \u00bb :<br \/>\n$ createdb -O toto -E UNICODE mabase<br \/>\nCREATE DATABASE<\/p>\n<p>Remarque : Si le test \u00e9choue, essayez de red\u00e9marrer PostgreSQL :<\/p>\n<p># \/etc\/init.d\/postgresql-8.1 restart<\/p>\n<p>Affectation d\u2019un mot de passe pour l\u2019utilisateur postgres<\/p>\n<p>L\u2019utilisateur \u00ab postgres est le super-utilisateur de la base de donn\u00e9es PostgreSQL. Il est donc important de lui donner un mot de passe, car par d\u00e9faut celui-ci n\u2019en pas.<\/p>\n<p>Pour cr\u00e9er ce mot de passe, nous allons utiliser la commande \u00ab psql \u00bb pr\u00e9sent\u00e9 au chapitre pr\u00e9c\u00e9dent :<\/p>\n<p>$ psql -d mabase -c &#8220;ALTER USER postgres WITH PASSWORD &#8216;LeMotDePasse'&#8221;<\/p>\n<p>Remarque 1 : Le mot de passe de l\u2019utilisateur syst\u00e8me de postgres (cr\u00e9\u00e9 \u00e0 l\u2019installation) peut-\u00eatre diff\u00e9rent du mot de passe de l\u2019utilisateur postgres de la base de donn\u00e9es.<\/p>\n<p>Remarque 2 : Pour faire fonctionner les clients Web ou les clients graphiques pr\u00e9sent\u00e9s aux chapitres suivant, il est obligatoire de d\u00e9finir un mot de passe pour \u00ab postgres \u00bb<\/p>\n<p>PhpPgAdmin : Interface Web pour acc\u00e9der \u00e0 PostgreSQL<\/p>\n<p>Dans le m\u00eame style que le c\u00e9l\u00e8bre \u00ab\u00a0 phpmyadmin\u00a0 \u00bb, il existe \u00ab\u00a0 phppgadmin\u00a0 \u00bb pour manipuler une base de donn\u00e9es PostgreSQL \u00e0 partir d\u2019une interface web en php.<\/p>\n<p>Avant d\u2019installer \u00ab\u00a0 phppgadmin\u00a0 \u00bb, il est n\u00e9cessaire d\u2019avoir un serveur Web+PHP op\u00e9rationnel.<\/p>\n<p>Pour installer apache et php, vous pouvez vous aider de ce m\u00e9mo :<br \/>\n&#8211;\u00a0 http:\/\/www.coagul.org\/article_imprime.php3 ?id_article=169<\/p>\n<p>Paquet \u00e0 installer :<\/p>\n<p># apt-get install phppgadmin<\/p>\n<p>Remarque 1 : Pour que le site soit accessible, j\u2019ai d\u00fb reconfigurer le paquet avant de pouvoir l\u2019utiliser (Lors de cette configuration, il faut lui indiquer le serveur Web \u00e0 utiliser) :<\/p>\n<p># dpkg-reconfigure phppgadmin<\/p>\n<p>Remarque 2 : J\u2019ai d\u00fb \u00e9galement reconfigurer Apache et le PHP pour qu\u2019ils prennent en compte PostgreSQL :<br \/>\n# dpkg-reconfigure php4-pgsql<br \/>\n# \/etc\/init.d\/apache2 restart<\/p>\n<p>Acc\u00e8s en local<\/p>\n<p>Si vous avez un navigateur Web install\u00e9 sur le serveur, vous pouvez saisir l\u2019adresse suivante :<\/p>\n<p>http:\/\/localhost\/phppgadmin\/<\/p>\n<p>Acc\u00e8s depuis le r\u00e9seau<\/p>\n<p>Pour pouvoir acc\u00e9der \u00e0 l\u2019interface depuis un autre poste du r\u00e9seau, il est n\u00e9cessaire d\u2019autoriser l\u2019acc\u00e8s en modifiant le fichier \u00ab \/etc\/apache2\/conf.d\/phppgadmin \u00bb. Pour cela, il faut ajouter apr\u00e8s la ligne \u00ab deny from all \u00bb, une ou plusieurs lignes pour indiquer un masque de sous-r\u00e9seau ou les adresses des postes autoris\u00e9s.<\/p>\n<p>Pour autoriser deux postes, il faut ajouter les adresses IP de ceux-ci :<br \/>\nallow from 192.168.0.1<br \/>\nallow from 192.168.0.2<\/p>\n<p>Pour autoriser un sous r\u00e9seau, il faut ajouter une ligne de ce type :<\/p>\n<p>allow from 192.168.0.0\/255.255.255.0<\/p>\n<p>Pour finir, il faut red\u00e9marrer le serveur \u00ab apache \u00bb :<\/p>\n<p>\/etc\/init.d\/apache2 restart<\/p>\n<p>Enfin, il est possible avec le navigateur des postes autoris\u00e9s d\u2019acc\u00e9der au serveur \u00e0 l\u2019adresse suivante :<\/p>\n<p>http:\/\/AdresseIPduServeur\/phppgadmin\/<\/p>\n<p>Autoriser le login \u00ab postgres \u00bb<\/p>\n<p>Pour des raisons de s\u00e9curit\u00e9, le login \u00ab\u00a0 postgres\u00a0 \u00bb n\u2019est pas autoris\u00e9 \u00e0 acc\u00e9der \u00e0 la base de donn\u00e9es via \u00ab\u00a0 phppgadmin\u00a0 \u00bb. Pour l\u2019autoriser, il faut modifier le fichier \u00ab \/etc\/phppgadmin\/config.inc.php \u00bb. Dans ce fichier, il faut mettre \u00ab false \u00bb \u00e0 la ligne suivante :<\/p>\n<p>$conf[&#8216;extra_login_security&#8217;]\u00a0 = false<\/p>\n<p>pgAdmin : Interface graphique pour acc\u00e9der \u00e0 PostgreSQL<\/p>\n<p>Installation du paquet :<\/p>\n<p># aptitude install pgadmin3<\/p>\n<p>La commande \u00ab\u00a0 pgadmin3\u00a0 \u00bb ou le menu \u00ab K \/ Debian \/ Applications \/ Base de donn\u00e9es \/pgAdmin III \u00bb permettent de lancer le programme.<\/p>\n<p>Une fois le programme lanc\u00e9, il faut utiliser le menu \u00ab Fichier \/ Ajouter serveur \u00bb pour se connecter au serveur PostgreSQL.<\/p><\/blockquote>\n<p><a target=\"_blank\" href=\"http:\/\/www.coagul.org\/article.php3?id_article=427\">source<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un autre tuto tr\u00e8s bien \u00e9crit : Ce document me sert de m\u00e9mo pour installer la base de donn\u00e9es PostgreSQL sur une Debian Testing (Etch). Ce m\u00e9mo a \u00e9t\u00e9 test\u00e9 sous Debian Testing, mais il doit \u00eatre possible de l\u2019adapter &hellip; <a href=\"https:\/\/www.dotmana.com\/weblog\/2006\/09\/installation-et-configuration-de-postgresql\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-46","post","type-post","status-publish","format-standard","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/www.dotmana.com\/weblog\/wp-json\/wp\/v2\/posts\/46","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dotmana.com\/weblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dotmana.com\/weblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dotmana.com\/weblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dotmana.com\/weblog\/wp-json\/wp\/v2\/comments?post=46"}],"version-history":[{"count":0,"href":"https:\/\/www.dotmana.com\/weblog\/wp-json\/wp\/v2\/posts\/46\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dotmana.com\/weblog\/wp-json\/wp\/v2\/media?parent=46"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dotmana.com\/weblog\/wp-json\/wp\/v2\/categories?post=46"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dotmana.com\/weblog\/wp-json\/wp\/v2\/tags?post=46"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}