Nous allons voir comment installer un serveur de base de données PostgreSQL sous Debian 9

Afin d’avoir le choix des versions, nous allons ajouter le repository de postgresql.org
Avec ce dernier, voici la liste des versions disponibles sur Debian 9: PostgreSQL 9.3, 9.4, 9.5, 9.6, 10, 11, 12 devel

Dans notre démonstration, nous allons installer la version 9.6

Installation postgreql

On ajout d’abord le repository :

apt-get install curl ca-certificates
 curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
 echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/postgresql.list

On met ensuite à jour les repository et on procède à l’installation :

apt update
 apt install -y postgresql-9.6 postgresql-client-9.6

On valide ensuite la connexion à la base de données via les commandes suivantes :

su - postgres
 psql -U postgres
 
 # Résultat
 postgres@demo-DEB:~$ psql -U postgres
 psql (9.6.10)
 Type "help" for help.
 
 postgres=#

Configuration postgresql

Par défaut, il existe deux templates (template0, template1) avec des collations en_US.UTF-8.
Si nous souhaitons utiliser une collation fr_FR.UTF-8, il faut valider sa présence dans l’OS et modifier un des templates :

#Ajout du FR UTF8
 sed -i -e 's/'# fr_FR.UTF-8 UTF-8'/'fr_FR.UTF-8 UTF-8'/g' /etc/locale.gen
 locale-gen fr_FR.UTF-8
 
 #Modification du template
 su - postgres
 psql -U postgres
 update pg_database set datallowconn = TRUE where datname = 'template0';
 c template0
 update pg_database set datistemplate = FALSE where datname = 'template1';
 drop database template1;
 create database template1 with template = template0 encoding = 'UTF8' LC_COLLATE = 'fr_FR.UTF-8' LC_CTYPE = 'fr_FR.UTF-8';
 update pg_database set datistemplate = TRUE where datname = 'template1';
 c template1
 update pg_database set datallowconn = FALSE where datname = 'template0';

On valide ensuite les modifications :

postgres=# l
  List of databases
  Name | Owner | Encoding | Collate | Ctype | Access privileges
 -------------+----------+----------+-------------+-------------+-----------------------
  postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
  template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
  | | | | | postgres=CTc/postgres
  template1 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 |
 (3 rows)

Personnalisation de postgresql

Si nous souhaitons écouter sur toutes les IP de la machine, nous pouvons changer le listen_addresses localhost par *

sed -i -e 's/'#listen_addresses = 'localhost''/'listen_addresses = '*''/g' /etc/postgresql/*/main/postgresql.conf

Dans le fichier /etc/postgresql/votre version/main/pg_hba.conf, il est possible de configurer les autorisations de connexion à la base de données comme l’exemple de configuration suivant :

# Database administrative login by Unix domain socket
 local all postgres peer
 
 # IPv6 local connections:
 host all all ::1/128 md5
 
 # IPv4 local connections:
 connection database user address method options
 host all all X.X.X.X/X md5
 
 #Compte de supervision
 connection database user address method options
 host supervision supervision X.X.X.X/X md5

Enfin, la prise en compte de toutes vos actions et modifications s’effectuera en relançant le service :

systemctl restart postgresql.service