Outils pour utilisateurs

Outils du site


admin-systeme:installation-configuration-postgresql

Installation et configuration de PostgreSQL 9 sur CentOS 6

Objectif

Procédure technique pour l'installation et la configuration (basique) de PostgreSQL 9.2 sur CentOS 6.3. Optionnellement, il sera possible d'activer la connexion distance au SGBD.

Note : Procédure testée avec plusieurs version de CentOS (5.x → 6.4) et de PostgreSQL (9.0 → 9.3)

Prérequis

  • Simplement un serveur CentOS / RHEL fonctionnel avec un accès SSH

Procédure

Installation des paquets

Choisissez la version de PostgreSQL que vous voulez, et votre OS sur cette page : http://yum.postgresql.org/repopackages.php

Rappel : Connaître sa version de CentOS / Fedora / RHEL (et 32 ou 64 bits)

Installez le repository qui correspond à votre version d'OS et la version de PostgreSQL que vous voulez :

# Pour moi, CentOS 6.3 64 bits - PostgreSQL 9.2
rpm -ivh http://yum.postgresql.org/9.2/redhat/rhel-6-x86_64/pgdg-centos92-9.2-6.noarch.rpm

Maintenant, il n'y a plus qu'à lancer l'installation avec yum. Rien de plus simple :

yum groupinstall "PostgreSQL Database Server PGDG"

Si jamais vous obtenez un Warning: group PostgreSQL Database Server PGDG does not exist., il se peut que le nom ne soit pas le même. Faites un :

yum grouplist -v | grep -i "postgres"

Initialisation et démarrage du serveur

Lancez les commandes suivante pour initaliser et démarrer le serveur PostgreSQL. Optionnellement, vous pouvez choisir de démarrer le service automatiquement à chaque reboot du serveur.

# Initialisation
service postgresql-9.2 initdb
# Démarrage
service postgresql-9.2 start
# Ajout au démarrage du serveur
chkconfig postgresql-9.2 on

Attention : Si vous avez choisi une version différente de PostgreSQL, le nom du service sera évidemment différent.

Problème rencontré : Sur Fedora 18, la commande initdb n'existe pas en passant par le service. Il faut faire :

# su - postgres
$ export PGDATA=/var/lib/pgsql/9.2/data/;
$ /usr/pgsql-9.2/bin/initdb

Configuration

Ouvrir le fichier /var/lib/pgsql/9.2/data/postgresql.conf et ajouter/dé-commenter/modifier les lignes suivantes :

listen_addresses = 'localhost'
port = 5432

Ensuite, connectez-vous sous l'utilisateur système postgres (su - postgres) et créez la première Base de données de notre serveur PostgreSQL, que nous appelons ici “test”.

createdb test

A cette étape, avec un serveur CentOS vierge, je me suis retrouvé bloqué par l'erreur

error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory

Pour résoudre cette erreur, c'est par ici.

Créez l'utilisateur administrateur de la base de données :

psql test
test=# CREATE ROLE adminuser WITH SUPERUSER LOGIN PASSWORD 'passwd';
test=# \q

Avec :

  • adminuser : le nom de l'utilisateur que vous voulez créer.
  • passwd : son mot de passe

Dans le fichier /var/lib/pgsql/9.2/data/pg_hba.conf, commentez la configuration par défaut et ajoutez cette configuration, en adaptons le nombre d'utilisateur.

# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             adminuser                                 md5
host    all             adminuser       127.0.0.1/24              md5
# IPv6 local connections:
host    all             adminuser             ::1/128                   md5

Cette configuration signifie que vous autorisez l'utilisateur adminuser à se connecter à toutes les bases de données du serveur (all), mais uniquement en local et par mot de passe sécurisé (md5).

Redemarrage

On a fait pas mal de modifs, alors un petit redémarrage en root s'impose :

service postgresql-9.2 restart

Test de fonctionnement

Il ne reste plus qu'à vérifier que tout fonctionne, en ce connectant au serveur avec notre utilisateur adminuser.

$ psql -h localhost -U adminuser test
Password for user adminuser:
psql (9.2.3)
 
test=#

Et nous y voilà ! Si vous avez tout bien suivi, ça devrait fonctionner.

Sources :

Configuration Optionnelle

Accès à distance

Ouvrez le fichier /var/lib/pgsql/9.2/data/postgresql.conf, et remplacer la ligne :

listen_addresses = 'localhost'

Par :

listen_addresses = '*'

Ensuite, ouvrez le fichier /var/lib/pgsql/9.2/data/pg_hba.conf et ajoutez la ligne : #TODO

http://www.cyberciti.biz/tips/postgres-allow-remote-access-tcp-connection.html

Packages supplémentaires

Installation de postgresql-dev version 9.2 :

yum install postgresql92-devel

Suite : Opérations courantes avec PostgreSQL

admin-systeme/installation-configuration-postgresql.txt · Dernière modification: 2014/06/14 10:43 par Arthur Hoaro