Installation de PostgreSQL 8.1 sur Debian Testing
Ce document me sert de mémo pour installer la base de données PostgreSQL sur une Debian Testing (Etch). Ce mémo a été testé sous Debian Testing, 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 Testing (Etch). Ce mémo a été testé sous Debian Testing, 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 Testing de base :
Installation
Paquets à installer :
# aptitude install postgresql-8.1
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 « template1 » installée par défaut :
$ psql template1
Une fois dans l’interface, voici quelques commandes utiles :
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
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n
CREATE ROLE
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 :
$ 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
Remarque : Si le test échoue, essayez de redémarrer PostgreSQL :
# /etc/init.d/postgresql-8.1 restart
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 :
Paquet à installer :
# apt-get install phppgadmin
Remarque 1 : 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
Remarque 2 : J’ai dû également reconfigurer Apache et le PHP pour qu’ils prennent en compte PostgreSQL :
# dpkg-reconfigure php4-pgsql
# /etc/init.d/apache2 restart
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/apache2/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/apache2 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
pgAdmin : Interface graphique pour accéder à PostgreSQL
Installation du paquet :
# aptitude install pgadmin3
La commande « pgadmin3 » ou le menu « K / Debian / Applications / Base de données /pgAdmin III » permettent de lancer le programme.
Une fois le programme lancé, il faut utiliser le menu « Fichier / Ajouter serveur » pour se connecter au serveur PostgreSQL.
Liens pour avoir plus d’informations
Le site francophone de PostgreSQL : http://www.postgresqlfr.org/
Historique des modifications
Version | Date | Commentaire |
---|---|---|
0.1 | 28/03/06 | Création par Tony GALMICHE |
Commentaires
Installation de PostgreSQL 8.1 sur Debian Testing
J’ai maintenant accès a phppgadmin mai il ne m’execute pas mon code php.
Il est afficher en brute dans ma page, comme ceci :
< ?php
/**
* Main access point to the app.
*
* $Id : index.php,v 1.11 2004/07/12 04:18:40 chriskl Exp $
*/
// Include application functions
include_once(’./libraries/lib.inc.php’) ;
$misc->printHeader() ;
?>
< ?php if (strcasecmp($lang[’applangdir’], ’rtl’) == 0) : ?>
">
< ?php else : ?>
,*">
< ?php endif ; ?>
< ?php echo $lang[’strnoframes’] ?>
< ?php
$misc->printFooter(false) ;
?>
Surement un problème de config php mais je ne vois pas ?
Installation de PostgreSQL 8.1 sur Debian Testing
oui je me log sous root.
Voici le message quand j’essai de me connecter sur http://adresse_ip/phppgadmin.
Accès interdit !
Vous n’avez pas le droit d’accéder à l’objet demandé. Soit celui-ci est protégé, soit il ne peut être lu par le serveur.
Si vous pensez qu’il s’agit d’une erreur du serveur, veuillez contacter le gestionnaire du site.
Error 403
adresse ip
Wed Oct 11 18:38:05 2006
Apache/2.0.54 (Debian GNU/Linux) PHP/4.3.10-16 mod_ssl/2.0.54 OpenSSL/0.9.7e mod_perl/1.999.21 Perl/v5.8.4
Auriez-vous une piste ?
Installation de PostgreSQL 8.1 sur Debian Testing
Vous-êtes sous root ?
Installation de PostgreSQL 8.1 sur Debian Testing
Je debute avec postgesql et je trouve que votre article est trés clair, bien sequencé.
Cepandant je rencontre un problème au niveau de l’installation phppgadmin.
j’ai une permission refusé au fichier /etc/apache2/conf.d/phppgadmin,.
Je ne peut donc pas autorisé l’ip de mon serveur.
Comment faire ?
Merci.
Installation de PostgreSQL 8.1 sur Debian Testing
salut
moi j’utilise la version 5.0 d’ubuntu et j’ai des problèmes lors de ma tentative d’installation de postgresql pouvez-vous m’aider ?
Merci d’avance.
> Installation de PostgreSQL 8.1 sur Debian Testing
Merci
> Installation de PostgreSQL 8.1 sur Debian Testing
Comme promis, j’ai relu ton article : RAS