Reconfigurer l'installation par défaut de PostgreSQL 10

cluster de bases de données installé par défaut. L’objectif est d’obtenir une installation qui convient pour une utilisation dans un environnement de développement sur une machine de bureau. Cet article fait partie d’une série qui concerne le serveur de bases de données PostgreSQL et son utilisation dans un environnement de développement:

  1. Installation de base de PostgreSQL
  2. Utiliser Postgres pgAdmin 3 pour administrer PostgreSQL
  3. Installer PostgreSQL 10
  4. Cet article: Reconfigurer l’installation par défaut de PostgreSQL 10
  5. Utiliser PostgreSQL 10 dans un environnement de développement
  6. Administrer PostgreSQL avec psql
  7. Postgres pgAdmin 4 : installation et configuration
  8. Postgres pgAdmin 4: Utilisation courante

L’installation par défaut ne convient pas pour un environnement de développement

La première installation de PostgreSQL crée un utilisateur système: postgres. Le cluster créé lors de cette installation appartient à cet utilisateur: fichiers et droits système. Un utilisateur de base de données (BDD) de même nom: postgres, est également créé. Cet utilisateur est le super administrateur du cluster. Un accés local au serveur de base de données est configuré pour l’utilisateur système postgres. Cet accés local permet à postgres de se connecter au serveur sans authentification supplémentaire en tant qu’utilisateur BDD postgres. Ce comportement convient à une installation sur un serveur réel. En revanche, il rend contraignant son utilisation sur une machine de développement. Le contrôle du fonctionnement du serveur, la modification de la configuration et l’accès local au serveur doivent se faire en passant par l’utilisateur système postgres. Pour une gestion plus simple du serveur, la meilleure solution est de substituer le login de l’utilisateur-développeur à postgres.

Supprimer le cluster PostgreSQL installé par défaut

Il faut arrêter le serveur s’il est démarré et supprimer le cluster créé par défaut: main. Pour cela exécuter:
sudo pg_dropcluster --stop 10 main

Créer un cluster PostgreSQL personnalisé

Si le login du développeur sur sa machine est jdupond (Pour Jean Dupond), le système lui attribue systématiquement un groupe système jdupond et un répertoire personnel: /home/jdupond. Dans /home/jdupond tout est permis pour l’utilisateur. Ceci nous amène à exécuter la commande suivante pour créer le cluster:
sudo pg_createcluster -u jdupond -g jdupond --locale=fr_FR.UTF-8 -l /home/jdupond/pgtest.log -d /home/jdupond/pgtest 10 pgtest
Cela veut dire, créer le cluster pgtest avec les paramètres:
  • Le propriétaire (fichiers, droits et utilisateur BDD d’administration) est jdupond
  • La locale qui détermine le format des données et le mode de recherche est le français de France avec encodage unicode UTF-8.
  • Le fichier de log qui est très utile pour le développement parcequ’il permet de visualiser les requêtes SQL exécutées par l’application est /home/jdupond/pgtest.log
  • Les données sont dans /home/jdupond/pgtest/ ce qui permet leur manipulation directe par l’utilisateur-développeur.

Contrôle du serveur de base de données PostgreSQL

Avec le cluster personnalisé le contrôle du serveur PostgreSQL devient faisable directement par l’utilisateur authentifié. Voici les commandes principales de contrôle avec, en commentaire (après le caractère #), la signification
pg_ctlcluster 10 pgtest start # démarrage
pg_ctlcluster 10 pgtest stop  # arrêt
pg_ctlcluster 10 pgtest status # affichage du statut marche/arrêt
pg_ctlcluster 10 pgtest reload # recharger la configuration
pg_ctlcluster 10 pgtest restart # redémarrer le serveur
Le contrôle inclu même la suppression de ce cluster. Pour cela exécuter:
pg_dropcluster --stop 10 pgtest
Faire attention, toutefois, car la suppression du cluster entraîne la suppression définitive des données qu’il gère.

Gérer les données avec l’utilitaire psql

L’utilitaire en ligne de commande psql est un client de connexion au serveur PostgreSQL. Entre autres choses, il permet à un utilisateur authentifié sur la machine serveur de se connecter à travers le socket Unix du serveur PostgreSQL sans authentification supplémentaire. La connexion se fait avec la commande du shell:
psql -d <NomDeBaseDeDonnees>
Avec le cluster personnalisé pour jdupond, le super administrateur des bases de données est jdupond. Il peut se connecter en local à la BDD postgres créée par défaut:
psql -d postgres
Une fois connecté, on peut vérifier le statut de super administrateur de jdupond. Pour cela exécuter:
select rolname, rolsuper from pg_roles;
Le résultat de cette requête doit montrer un ‘t‘ (true) pour jdupond dans le champ rolsuper. Le champ rolsuper est un indicateur pour le profile super administrateur. On remarquera également l’absence de l’utilisateur postgres de la liste. De la même manière il est possible à l’utilisateur-développeur, en exécutant des requêtes SQL, de créer, consulter, modifier ou supprimer tout type d’objets de bases de données: utilisateurs, bases de données, schémas, tables..  ]]>