Retour

Postgresql, base de donnée relationnelle objet



Installation de Postgresql-8.1 sur une Debian Etch.

PostGreSQL est une base de données relationnelle objet, DBMS ( définition wikipedia ), libre, très riche en terme de fonctionnalités, très avancée, parfaitement stable, convenant donc pour des bases importantes. 

a/ Installation des paquets nécessaires :

Commençons par installer les paquets nécessaires à l'aide d'Aptitude :

sudo aptitude install postgresql-8.1

Suivant le cas ces paquets supplémentaires vont être automatiquement installés : libpq4 postgresql-8.1 postgresql-client-8.1 postgresql-client-common postgresql-common ssl-cert. 

Les messages affichés lors de l'installation et de la configuration nous donnent déjà des indications précieuses :

Paramétrage de postgresql-common (66) ...
adduser : Attention : ce répertoire personnel n'appartient pas à
l'utilisateur que vous êtes en train de créer.
Ajout de l'utilisateur « postgres » au groupe « ssl-cert »...
Terminé.

Paramétrage de postgresql-8.1 (8.1.5-1) ...
Creating new cluster (configuration: /etc/postgresql/8.1/main, data: /var/lib/postgresql/8.1/main)...
Moving configuration file /var/lib/postgresql/8.1/main/postgresql.conf to /etc/postgresql/8.1/main...
Moving configuration file /var/lib/postgresql/8.1/main/pg_hba.conf to /etc/postgresql/8.1/main...
Moving configuration file /var/lib/postgresql/8.1/main/pg_ident.conf to /etc/postgresql/8.1/main...
Configuring postgresql.conf to use port 5432...
Starting PostgreSQL 8.1 database server: main.

L'installation de postgresql a donc automatiquement créé un nouvel user : postgres.

b/ Premières configurations de Postrgresql :

Qu'en est-il de ce nouvel utilisateur postgres ? par sécurité, root ne peut pas se connecter en standard sur postgresql, il faudra donc s'identifier sous ce nouvel user pour gérer. 

:~$ cat /etc/group |grep postgres
ssl-cert:x:114:postgres
postgres:x:115:
:~$ sudo cat /etc/passwd |grep postgres
postgres:x:108:115:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
:~$ sudo cat /etc/shadow |grep postgres
postgres:!:13463:0:99999:7:::

Ces trois commandes nous montrent que les groupes et l'user postrges ont bien été créés, mais que le nouvel user n'as pas de mot de passe. Par précaution on va lui en attribuer un : 

:~$ sudo passwd postgres
Enter new UNIX password: votre_pass
Retype new UNIX password: votre_pass
passwd : le mot de passe a été mis à jour avec succès
:~$ sudo cat /etc/shadow |grep postgre
postgres:$1$KSnJ8TBM$6tx2wKJ3RjiHPiC/Q5HQh/:13463:0:99999:7:::

l'utilisateur postgres a maintenant un mot de passe. 

Il faut aussi modifier le fichier pg_hba.conf pour simplifier et sécuriser la création de futurs users postgresql. On édite le fichier de configuration par la commande : 

:~$ sudo nano -w -B -m /etc/postgresql/8.1/main/pg_hba.conf

et on remplace ident sameuser par md5 (configuration mot de passe) pour avoir :

. . .
local   all         postgres                          md5
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
# "local" is for Unix domain socket connections only
local   all         all                               md5
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5 

On a vu que pour gérer postgresql on ne le ferait pas en root mais avec l'utilisateur postgres. On se connecte donc sous cet user pour la suite : 

:~$ su - postgres
Password:
postgres@phusin:~$

Maintenant on peut créer un nouvel user pour postgresql avec la commande createuser, qui est une commande propre à postgresql ( voir le man ). Le nouvel user postgreql n'est pas un user du système d'exploitation mais peut avoir le même nom pour simplifier :

postgres@phusin:~$ createuser cep
Le nouvel rôle est-t'il un superutilisateur ? (y/n) n
Le nouvel rôle doit-il être autorisé à créer des bases de données ? (y/n) y
Le nouvel rôle doit-il être autorisé à créer de nouveaux rôles ? (y/n) n
CREATE ROLE

L'utilisateur cep n’a pas de mot de passe, il n’est donc pas encore opérationnel. On lui attribue un mot de passe :

postgres@phusin:~$ psql -d template1 -c "alter user cep with password 'votre_mot_pass'"
ALTER ROLE

On peut aussi faire une nouvelle base pour l'user cep, avec comme nom de base cepbase1 :

postgres@phusin:~$ createdb -O cep -E UTF8 cepbase1
CREATE DATABASE

Pour terminer, comme l'user postgres est un super user de postgresql, on va lui attribuer un mot de passe, toujours avec la commande générique psql : 

postgres@phusin:~$ psql -d postgres -c "ALTER USER postgres WITH PASSWORD 'mot_pass'"
ALTER ROLE

On peut lister les bases et users par la commande psql -l  :

postgres@phusin:~$ psql -l
     Liste des bases de données
    Nom    | Propriétaire | Encodage
-----------+--------------+----------
 cepbase1  | cep          | UTF8
 postgres  | postgres     | UTF8
 template0 | postgres     | UTF8
 template1 | postgres     | UTF8

La première partie de la configuration est terminée. On va donc relancer postgresql afin que les modifications soient prises en compte, en particulier les demandes de mots de passe. Pour cela on utilise su ou on déconnecte l'user postgres pour utiliser sudo :

cep@phusin:~$ sudo /etc/init.d/postgresql-8.1 restart
Password:
Restarting PostgreSQL 8.1 database server: main.

On vérifie le fonctionnement :

cep@phusin:~$ psql -l -U cep
Mot de passe pour l'utilisateur cep :
     Liste des bases de données
    Nom    | Propriétaire | Encodage
-----------+--------------+----------
 cepbase1  | cep          | UTF8
 postgres  | postgres     | UTF8
 template0 | postgres     | UTF8
 template1 | postgres     | UTF8
(4 lignes)

Le mot de passe est bien demandé. Pour l'exemple on pourrait créer une table avec les commandes :

cep@phusin:~$ psql cepbase1
Mot de passe :
Bienvenue dans psql 8.1.5, l'interface interactive de PostgreSQL.

Tapez:  \copyright pour les termes de distribution
        \h pour l'aide-mémoire sur les commandes SQL
        \? pour l'aide-mémoire sur les commandes psql
        \g ou terminez avec un point-virgule pour exécuter une requête
        \q pour quitter

cepbase1=> CREATE TABLE jours (  
cepbase1(> mois   varchar(80),
cepbase1(> unités   int,   -- chiffre mois
cepbase1(> temps    int,   -- météo
cepbase1(> date     date
cepbase1(> );
CREATE TABLE
cepbase1=> INSERT INTO jours VALUES ( 'dimanche', n11, vent, '2006-11-12');

cepbase1-> \d jours
              Table «public.jours»
 Colonne |         Type          | Modificateurs
---------+-----------------------+---------------
 mois    | character varying(80) |
 unités  | integer               |
 temps   | integer               |
 date    | date                  |

c/ gestion graphique :

Pour gérer postgresql avec une interface graphique, il est aussi possible d'installer pgadmin3 et / ou  phppgadmin

Concernant phppgadmin, après l'avoir installé ( de même que apache2 et php4 si necessaire ), il faudra éditer le fichier /etc/phppgadmin/apache.conf pour autoriser la connexion depuis certaines IP ou une plage d'IP, comme par exemple :

# allow from IP
allow from 192.168.1.10

Ensuite pour que tout fonctionne, il faudra reconfigurer phppgadmin et php4-pgsql, et relancer apache2 :

:~$ sudo dpkg-reconfigure phppgadmin
selectionner Apache2

:~$ sudo dpkg-reconfigure php4-pgsql
:~$ sudo /etc/init.d/apache2 restart

Quelques liens utiles :
http://docs.postgresqlfr.org/
http://docs.postgresqlfr.org/8.1/
http://docs.postgresqlfr.org/8.1/admin.html
http://www.pgadmin.org/?locale=fr_FR

En annexe, quelques copies d'écrans de pgadmin3 et phppgadmin




Retour



Valid HTML 4.01 Transitional        Valid CSS!