L'installation de PostGreSQL

Tout d'abord, il vous faut une Debian en état de marche, bien évidement...

On installe le paquet du serveur postgresql

# apt-get install postgresql-8.1

Contrairement à MySQL ou l'on administre la base en modifiant uniquement une base principal, ici, l'administration se fait à partir du shell.

L'installation du paquet créé à cet effet un utilisateur postgres, dont le mot de passe n'est pas donné. Mais comme on est encore logué avec le compte root, il suffit de changer le mot de passe de l'utilisateur :

# passwd postgres

La encore contrairement à MySQL, la configuration de PostgreSQL est paramétré pour que ce soit les comptes systèmes qui soient utilisés et non des utilisateurs spécifiques au serveur de base de données.

Pour modifier ceci, il faut modifier le fichier pg_hba.conf, mais avant de faire ce changement, pour éviter de ne plus pouvoir s'authentifier sur le serveur, il faut attribuer un mot de passe à l'utilisateur postgres de la base de données. (A ne pas confondre avec l'utilisateur postgres qui est un compte système et avec lequel nous sommes en train de faire les modifications).

Pour modifier le mot de passe de l'utilisateur dans la base de données on se sert de la commande psql, qui est un équivalent de la commande mysqladmin, elle permet d'interagir avec le serveur de base de données.

Le paramètre -c permet d'exécuter une requête SQL via le shell, c'est donc grâce à lui que l'on va pouvoir faire les opérations d'administration directement via la console.

Attribution du mot de passe à l'utilisateur postgres :

$ psql -c "ALTER USER "postgres" WITH PASSWORD 'le_mot_de_passe'"

Edition du fichier pg_hba.confpour passer l'authentification via les comptes de la base de données :

$ vim /etc/postgresql/8.1/main/pg_hba.conf

Il faut remplacer dans ce fichier le paramètre ident sameuser sur les 2 lignes suivantes :

# Database administrative login by UNIX sockets
local   all         postgres                          ident sameuser

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               ident sameuser

Et au final on se retrouve donc avec ça :

# Database administrative login by UNIX sockets

local   all         postgres                          password

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               password

On enregistre et on quitte l'éditeur de texte (:x ou :wq)

Une fois les modifications faites, il faut redémarrer le serveur pour que les modifications soit prises en compte :

$ /etc.init.d/postgresql restart

Une fois ceci fait, on passe à l'administration proprement dite avec la création d'un utilisateur, à qui l'on va donner les droits d'administrateur complet. (ceci n'est pas obligatoire étant donné que l'utilisateur postgres est administrateur également) :

# su postgres

Quelques exemples des commandes d'administration les plus courantes

Pour créer un utilisateur administareur sous PostgreSQL, il faut utiliser la commande createuser, équivalent du adduser pour les comptes systèmes.

$ createuser romain

Ensuite, il faut lui attribuer un mot de passe, et pour être sûr que l'utilisateur est bien administrateur, on peut en rajouter une couche dans la même requête :

$ psql -c "ALTER USER "romain" WITH PASSWORD 'le_mot_de_passe' CREATEDB CREATEUSER VALID UNTIL 'infinity'"

Voilà, on se retrouve maintenant avec 2 comptes administrateur du serveur de base de données.

Dorénavant, il n'est plus nécessaire d'utiliser le compte système postgres pour effectuer des modifications, à partir de n'importe quel compte d'utilisateur sous lequel on est authentifier, il faudra ajouter le paramètre -U suivi du nom de l'administrateur pour ajouter, modifier, supprimer une base de données ou un utilisateur.

Pour ajouter un utilisateur :

$ createuser -U postgres usertest

Par exemple, pour créer une base test ayant pour propriétaire postgres, il suffit d'entrer la commande suivante depuis n'importe quel compte système :

$ createdb -U postgres test

Avec la commande précédente, le propriétaire de la base test est postgres, si l'on avait voulu que le propriétaire soit un autre utilisateur, il aurait fallu taper la commande suivante :

$ createdb -U postgres -O un_autre_utilisateur_sql test

Pour vérifier la liste des bases de données disponibles ainsi que le propriétaire de chacune de ces bases, il suffit d'entrer la commande suivante :

$ psql -l -U postgres

Maintenant que vous savez le faire en ligne de commande, il faut que je vous avoue qu'il existe une interface web pour faire tout ça, et tout le reste, dans la même veine que PHPMyAdmin, mais spécialement faites pour PostgreSQL, il s'agit de PHPPGAdmin.

Sous Debian, le plus simple étant un apt-get install phppgadmin. Pour ma part, j'ai tout de même préféré télécharger la version disponible sur le site officiel et une installation manuelle, mais très rapide également.

Il faut donc se rendre sur la page de téléchargement et de télécharger la version que l'on souhaite, pour ma part, et au moment ou je fait cette doc, il s'agit de la version 4.0.1, et j'ai choisi la version bzip2.

$ wget http://switch.dl.sourceforge.net/sourceforge/phppgadmin/phpPgAdmin-4.0.1.tar.bz2

$ tar xjf phpPgAdmin-4.0.1.tar.bz2

On déplace le dossier au bon endroit :

$ mv phpPgAdmin /var/www/

Bien entendu, pour que ça marche, il faut avoir un serveur http (apache2 chez moi), et PHP, activé avec le support pgsql, si ce n'est pas le cas :

# apt-get install apache2 libapache2-mod-php5 php5-pgsql

Ensuite on se rend, via son navigateur préféré, à l'adresse correct (http://127.0.0.1/phpPgAdmin si c'est en local, sinon adapté...)

Et la, aucune configuration à faire, c'est magique, c'est magnifique, on s'authentifie avec le compte d'utilisateur de la base de donnée qu'on souhaite et on fait ce qu'on veut (selon les droits dont dispose l'utilisateur choisi bien évidement)


Lien annexe :

Documentation en français sur PostgreSQL

La communauté française autour de PostgreSQL

Site officiel de PostgreSQL (en anglais)

Ce billet avait été publié pour la première fois le 19/07/2006, il fait partie des premiers billets publié à l'origine sur mon autre blog. Il a été rappatrié ici afin de réunir les billets concernant le monde des nouvelles technologies sur un blog consacré uniquement à ce thème.