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