Tuto | Installez et débutez avec postgresql

Article publiée le 27 Décembre 2016

PostgreSQL est pour moi la meilleure alternative à Oracle. Elle allie performance, fiabilité et simplicité d’administration. Ayant eu pas mal de galère avec MySQL que je trouve plus « fragile » j’ai vite été séduis par la robustesse de PostGRESQL.

 

1) Installation

Debian/Ubuntu

apt-get install postgresql-*

RedHat/Centos

La version de postgresql contenu dans les dépôts de ces distributions sont un peu veilles. Je vous suggère d’ajouter les dépots yum officiel:

CentOS/RHEL 7
# rpm -Uvh http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-1.noarch.rpm
CentOS/RHEL 6
# rpm -Uvh http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-redhat94-9.4-1.noarch.rpm
CentOS/RHEL 5
# rpm -Uvh http://yum.postgresql.org/9.4/redhat/rhel-5-x86_64/pgdg-redhat94-9.4-1.noarch.rpm

9.4 correspond à la version de postgreSQL, rien ne vous empêche d’installer une version supérieur/inférieur en modifiant le lien.

Ensuite procédez à l’installation (encore une fois le numéro de la version est à adapter)

yum install postgresql94-server postgresql94

Initialisez l’instance postgresql:

/usr/pgsql-9.4/bin/postgresql94-setup initdb

 

2) Configuration

  • Emplacement des fichiers de configuration sous RedHat/Centos: /var/lib/pgsql/9.4/data/postgresql.conf
  • Emplacement des fichiers de configuration sous Debian/Ubuntu: /etc/postgresql/9.4/main/

Modifiez le fichier de configuration postgresql.conf avec la configuration suivante:

 

data_directory = ‘/var/lib/postgresql/9.4/main’
hba_file = ‘/etc/postgresql/9.4/main/pg_hba.conf’
ident_file = ‘/etc/postgresql/9.4/main/pg_ident.conf’
external_pid_file = ‘/var/run/postgresql/9.4-main.pid’

listen_addresses = ‘*’
port = 5432
max_connections = 200
unix_socket_directories = ‘/var/run/postgresql’
ssl = true

shared_buffers = 512MB
work_mem = 16MB
maintenance_work_mem = 2048MB

checkpoint_segments = 64
checkpoint_completion_target = 0.9

effective_cache_size = 1024MB

log_min_duration_statement = 500
log_line_prefix = ‘%m %d ‘

datestyle = ‘iso, mdy’
#lc_messages = ‘en_US.UTF-8’
#lc_monetary = ‘en_US.UTF-8’
#lc_numeric = ‘en_US.UTF-8’
#lc_time = ‘en_US.UTF-8’

lc_messages = ‘fr_FR.UTF-8’
lc_monetary = ‘fr_FR.UTF-8’
lc_numeric = ‘fr_FR.UTF-8’
lc_time = ‘fr_FR.UTF-8’
default_text_search_config = ‘pg_catalog.english’

ssl_cert_file = ‘/etc/ssl/certs/ssl-cert-snakeoil.pem’
ssl_key_file = ‘/etc/ssl/private/ssl-cert-snakeoil.key’

Modifiez le fichier pg_hba.conf afin d’autoriser la connexion d’un client extérieur à votre base (à adapter selon la configuration de votre réseau):

# DO NOT DISABLE!
# If you change this first entry you will need to make sure that the
# database superuser can access the database using some other method.
# Noninteractive access to all databases is required during automatic
# maintenance (custom daily cronjobs, replication, and similar tasks).
#
# Database administrative login by Unix domain socket
local all postgres peer

# TYPE DATABASE USER ADDRESS METHOD

# « local » is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 192.1.1.137/24 md5
host all all 192.168.0.0/24 md5

Enfin redémarrez postgresql afin de charger la conf.

3) Connexion

Pour vous connecter à votre instance postgreSQL vous avez le choix entre deux méthodes:

  • En ligne de commande:

[user@dbserver ~]$ psqlsu – postgres

[postgres@dbserver ~]$ psql

 

Vous serez ainsi connecter au client en ligne de commande Postgresql. Afin d’avoir un apercu des commandes tapez \h.

Pour plus d’info n’hésitez pas à consulter la documentation officiel : http://docs.postgresql.fr/

 

  • Via une interface graphique

Il est également possible d’utiliser une interface graphique afin d’administrer votre instance postgreSQL.

Cette interface graphique du nom de PGADMIN est disponible en libre téléchargement: https://www.pgadmin.org/

 

Autre tutoriel sur postgresql:

Tuto | Installation d’un serveur PostgreSQL multi-instances

Tutoriel | Configurer la réplication master/slave d’une instance PostgreSQL