Skip to Content

Installation de PostgreSQL 7.4 sur Debian Sarge

Ce document me sert de mémo pour installer la base de données PostgreSQL sur une Debian Sarge (Stable). Ce mémo a été testé sous Debian Sarge, mais il doit être possible de l’adapter facilement aux autres distributions Linux.

But de ce document

Ce document me sert de mémo pour installer la base de données PostgreSQL sur une Debian Sarge (Stable). Ce mémo a été testé sous Debian Sarge, mais il doit être possible de l’adapter facilement aux autres distributions Linux.

PostgreSQL est moins connue et moins utilisée que MySQL, pourtant cette base à des fonctionnalités très intéressantes qui la rend comparable aux bases de données commerciales comme Oracle ou DB2.

Pré-requis

Pour installer PostgreSQL, il faut installer une Debian Sarge de base :

  •  http://www.coagul.org/article.php3 ?id_article=337

    Installation

    Paquets à installer :

    # apt-get install postgresql postgresql-client

    Lors de l’installation, l’utilisateur «  postgres  » est créé automatiquement. Par défaut, le mot de passe de cet utilisateur n’est pas connu. Je conseil de lui en affecter un car cela permet de passer sous l’utilisateur « postgres » sans passer par l’utilisateur « root » :

    # passwd postgres

    Pour travailler sur la base de données, il faut commencer par se connecter sous le compte de ce nouvel utilisateur :

    # su postgres

    psql : Interface en ligne de commande pour accéder à PostgreSQL

    La commande «  psql  » est une interface en ligne de commandes permettant d’accéder et de manipuler une base de données PostgreSQL.

    La commande suivante, qu’il faut toujours saisir sous le compte «  postgres  », permet de se connecter à la base de données «  mabase  » :

    $ psql mabase

    Une fois dans l’interface, voici quelques commandes utiles :

  •  \ ? : Donne la liste des commandes
  •  \h : Donne la liste des commandes SQL
  •  \h SELECT : Donne une aide sur la commande SQL SELECT
  •  \l : Donne la liste des bases de données.
  •  \q : Pour sortir de l’interface.

    La commande suivante, permet par exemple de connaître la liste des bases de données :

    $ psql -l

    Gestion des droits d’accès à PostgreSQL

    Par défaut, pour accéder à PostgreSQL, il faut se connecter sous l’utilisateur «  postgres  ». Pour créer un nouvel utilisateur, il faudrait commencer par lui créer un compte sur le système, ce qui n’est peut-être pas souhaitable. Pour changer cette configuration, il faut modifier le fichier « /etc/postgresql/pg_hba.conf » et mettre «  password  » à la place de «  ident sameuser  » sur les deux lignes suivantes :

    local  all     all                                        ident sameuser
    host   all     all    127.0.0.1         255.255.255.255   ident sameuser

    ce qui donne :

    local  all     all                                        password
    host   all     all    127.0.0.1         255.255.255.255   password

    Cette modification permet d’éviter de passer par des comptes du système et oblige à fournir un mot de passe à chaque connexion.

    Création d’un nouvel utilisateur

    La commande «  createuser  » toujours sous le compte « postgres », permet de créer un nouvel utilisateur :

    $ createuser toto
    Le nouvel utilisateur a-t'il le droit de créer des bases de données ? (y/n) y
    Le nouvel utilisateur a-t'il le droit de créer des utilisateurs ? (y/n) n
    CREATE USER

    Par défaut le nouvel utilisateur n’a pas de mot de passe et il n’est donc pas encore possible de l’utiliser. La commande suivante, permet de définir ce mot de passe :

    $ psql -d template1 -c "alter user toto with password 'motdepasse'"

    La commande suivante, permet de vérifier que cet utilisateur est correctement reconnu :

    postgres@pgftp:/root$ psql -l -U toto
    Mot de passe :
        Liste des bases de données
       Nom    | Propriétaire | Encodage
    -----------+--------------+----------
    template0 | postgres     | LATIN9
    template1 | postgres     | LATIN9

    Création d’une base de données

    La commande suivante, permet de créer la base de données « mabase  » pour l’utilisateur «  toto  » en utilisant l’encodage «  UNICODE  » :

    $ createdb -O toto -E UNICODE mabase
    CREATE DATABASE

    Affectation d’un mot de passe pour l’utilisateur postgres

    L’utilisateur « postgres est le super-utilisateur de la base de données PostgreSQL. Il est donc important de lui donner un mot de passe, car par défaut celui-ci n’en pas.

    Pour créer ce mot de passe, nous allons utiliser la commande « psql » présenté au chapitre précédent :

    $ psql -d mabase -c "ALTER USER postgres WITH PASSWORD 'LeMotDePasse'"

    Remarque 1 : Le mot de passe de l’utilisateur système de postgres (créé à l’installation) peut-être différent du mot de passe de l’utilisateur postgres de la base de données.

    Remarque 2 : Pour faire fonctionner les clients Web ou les clients graphiques présentés aux chapitres suivant, il est obligatoire de définir un mot de passe pour « postgres »

    PhpPgAdmin : Interface Web pour accéder à PostgreSQL

    Dans le même style que le célèbre «  phpmyadmin  », il existe «  phppgadmin  » pour manipuler une base de données PostgreSQL à partir d’une interface web en php.

    Avant d’installer «  phppgadmin  », il est nécessaire d’avoir un serveur Web+PHP opérationnel.

    Pour installer apache et php, vous pouvez vous aider de ce mémo :

  •  http://www.coagul.org/article_imprime.php3 ?id_article=169

    Paquet à installer :

    # apt-get install phppgadmin

    Remarque pour que le site soit accessible, j’ai dû reconfigurer le paquet avant de pouvoir l’utiliser (Lors de cette configuration, il faut lui indiquer le serveur Web à utiliser) :

    # dpkg-reconfigure phppgadmin

    Accès en local

    Si vous avez un navigateur Web installé sur le serveur, vous pouvez saisir l’adresse suivante :

    http://localhost/phppgadmin/

    Accès depuis le réseau

    Pour pouvoir accéder à l’interface depuis un autre poste du réseau, il est nécessaire d’autoriser l’accès en modifiant le fichier « /etc/apache/conf.d/phppgadmin ». Pour cela, il faut ajouter après la ligne « deny from all », une ou plusieurs lignes pour indiquer un masque de sous-réseau ou les adresses des postes autorisés.

    Pour autoriser deux postes, il faut ajouter les adresses IP de ceux-ci :

    allow from 192.168.0.1
    allow from 192.168.0.2

    Pour autoriser un sous réseau, il faut ajouter une ligne de ce type :

    allow from 192.168.0.0/255.255.255.0

    Pour finir, il faut redémarrer le serveur « apache » :

    /etc/init.d/apache restart

    Enfin, il est possible avec le navigateur des postes autorisés d’accéder au serveur à l’adresse suivante :

    http://AdresseIPduServeur/phppgadmin/

    Autoriser le login « postgres »

    Pour des raisons de sécurité, le login «  postgres  » n’est pas autorisé à accéder à la base de données via «  phppgadmin  ». Pour l’autoriser, il faut modifier le fichier « /etc/phppgadmin/config.inc.php ». Dans ce fichier, il faut mettre « false » à la ligne suivante :

    $conf['extra_login_security']  = false

    Il faut également ajouter l’adresse ip locale sur la ligne suivante :

    $conf['servers'][0]['host'] = '127.0.0.1';

    Liens pour avoir plus d’informations

    Le site francophone de PostgreSQL : http://www.postgresqlfr.org/

    Une documentation sur linux-france : http://www.linux-france.org/article/serveur/psql/

    Un article que j’ai trouvé intéressant : http://trustonme.net/didactels/183.html

    Historique des modifications

    Version Date Commentaire
    0.1 26/07/05 Création par Tony GALMICHE
    0.3 28/03/06 Mise à jour suite à nouvelle installation
  • Commentaires

    Il s'agit de la resume que

    Il s'agit de la resume que nous cherchions

    Installation de PostgreSQL 7.4 sur Debian Sarge

    Merci :-)

    Installation de PostgreSQL 7.4 sur Debian Sarge

    situation :
    Debian Sarge
    PostGresSql 7

    Problème : bien qu’ayant fait les manips indiquée dans le tuto, lorsque je me connecté à partir d’un poste distant (cela doit être pareil en local d’ailleurs) avec phppgadmin sur le compte postgres, le message "echec de la connection" apparaissait.

    Solution :
    Dans le fichier /etc/postgresql/pg_hba.conf, j’ai modifié la ligne suivante :

    # Database administrative login by UNIX sockets

    local all postgres password #ident sameuser

    a part cela, ce tuto est génial et ma fait gangné un temps précieux. Aussi, je vous remercie tous pour ce site. Bonne continuation

    > Installation de PostgreSQL

    Il manque
    tcpip_socket = true
    dans /etc/postgres/$VERSION/main/postgres.conf

    > Installation de PostgreSQL

    Il est préférable de mettre un mot de passe à l’utilisateur postgres pour éviter de passer par root pour se connecter sous cet utilisateur.

    Il faut saisir la commande « createdb mabase » une fois connecté sous l’utilisateur « postgres ».

    J’ai modifié cette partie et j’ai également ajouté un chapitre pour pgAccess.

    Merci pour ta relecture.

    > Installation de PostgreSQL

    crée par défaut l’utilisateur « postgres » >> "créée" non ?

    Par contre, je ne comprend pas l’interet de mettre un mot de passe a l’utilisateur psql.
    Sous debian, le shell de l’utilisateur de postgresql est psql ? Parce que tu n’indique pas ou il faut tapper "createdb mabase" (ou j’ai mal compris).