PostgreSQL est un système de gestion de bases de donnés relationnelles.

Installation

Sous Debian, il suffit d'installer le paquet postgresql.

$ sudo apt-get install --no-install-recommends postgresql

Configuration

Les fichiers de configuration se trouvent dans le répertoire /etc/postgresql/<Version>/<Cluster>/. Le chemin complet étant différent selon la version et le cluster, je donnerai uniquement le nom du fichier, et pas le chemin absolu dans cette section.

Pour permettre l'utilisation du serveur depuis d'autres machines

Pour permettre à d'autres machines de se connecter au serveur PostgreSQL, il faut qu'il écoute sur d'autres interfaces que l'interface loopback. Pour cela, il faut modifier le paramètre listen_addresses qui se situe dans le fichier postgresql.conf. Cette variable contient une liste des IP des interfaces sur lesquelles le serveur doit écouter, séparées par des virgules.

listen_addresses = '<IP1>,<IP2>'

Note : En plus d'adresses IP, il est possible de mettre localhost, ce qui désigne l'interface loopback, ou *, qui désigne toutes les interfaces.

Attention : Ce sont les IP des interfaces du serveur PostgreSQL qu'il faut renseigner ici.

Il faut ensuite autoriser d'autres machines à se connecter sur le serveur, pg_hba.conf. Le format des lignes de ce fichier est TYPE DATABASE USER ADDRESSES METHOD.

  • Pour les colonnes DATABASE et USER, il est possible de mettre all au lieu d'un nom, pour donner accès à la totalité des bases de données ou utilisateurs.
  • La colonne ADRESSES définit un réseau autorisé à accéder au serveur. Il est possible d'utiliser le masque /32 pour désigner une machine spécifique : 10.2.32.254/32

Augmenter les ressources utilisées par PostgreSQL

Sur des machines récentes, il est possible d'augmenter les ressources utilisables par PostgreSQL en modifiant des paramètres du noyau Linux. Sous Debian, le fichier /etc/sysctl.d/30-postgresql-shm.conf permettant ces configurations spécifiques est proposé par défaut.

Attention : Ces paramètres sont définis au niveau du noyau, et ne s'appliquent donc pas uniquement à PostgreSQL.

Après une modification de ces paramètres, il est nécessaire de recharger la configuration de sysctl.

$ sudo sysctl --system

Commandes disponibles

Les commandes décrites ici sont fournies par le paquet postgresql-client, dont dépend le paquet postgresql.

Pour toutes ces commandes, il est possible de définit le cluster dans lequel les opérations peuvent être effectuées avec la variable d'environnement PGCLUSTER.

$ export PGCLUSTER='<Version>/<Cluster>'

Interface console

L'utilitaire psql est une simple interface en mode console pour PostgreSQL.

On peut y taper directement des requêtes SQL, ou s'en servir de manière non interactive pour exécuter des fichiers SQL.

$ psql <Database> < <Fichier.sql>

Il accepte aussi des commandes spécifiques, permettant d'afficher des informations simplement.

  • La commande \d affiche la liste des éléments contenus dans la base de données courante (tables, vues, séquences...). Il est possible de lui spécifier les éléments à afficher par leurs initiales. La commande dt n'affichera donc que les tables.
  • La commande \timing lui indique d'afficher la durée d'exécution des requêtes.
  • La commande \pset permet de définit les paramètres d'affichage spécifiques à psql.
  • D'autres commandes sont disponibles. La liste complète des commandes est donnée dans le manuel.

Il est possible de faire exécuter automatiquement des commandes ou requêtes SQL au lancement psql en les mettant dans le fichie ~/.psqlrc.

Gestion des utilisateurs

  • createuser : Création
  • dropuser : Suppression

Gestion des bases de données

  • createdb : Création
  • dropdb : Suppression
  • pg_dump : Sauvegarde
  • pg_restore : Restauration
  • vacuumdb : Nettoyage