PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 10/10/2021 20:50:39

marpa
Membre

Impossible de relancer le système de base de données

Bonjour,


Pour information préalable, je débute sur PostgreSQL.


Afin de pouvoir utiliser PostGIS, j'ai procédé à une installation de PostgreSQL 11 sur une LMDE4 (Debian 10), le tout semblait fonctionné. J'ai pu faire quelque manips sur PGadmin (accès aux bases de données, ...), mais voilà qu'au moment d'utiliser PostGIS, je m'aperçois que je ne l'ai pas installé.
Donc je quitte PGadmin, installe PostGIS et reviens sur PGadmin, mais au moment d'accéder à une base de données en utilisant PostGIS, il me renvoie une erreur (que je n'ai pas noté sad mais en gros il n'arrivait pas à se connecter à la base de données).

Avec mes mauvaises habitudes de linuxien, je suis alors allé bidouiller le fichier de configuration de Postgre (tester un autre port, modifier les listen_adresses en mettant localhost, ...) et peut-être quelques autres manips dont je ne me souviens plus (c'était il y a 2 semaines !).
N'arrivant pas à résoudre le problème, je l'ai laissé de côté et m'y suis repenché aujourd'hui.

J'ai repris depuis le début en purgeant les installations de PostgreSQL et PostGIS, puis refait une installation propre... Souvent ça marche wink
Mais le problème persiste même après cette ré-installation hmm


En faisant un état des lieux du service, ça semble fonctionner :

● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Sun 2021-10-10 19:24:48 CEST; 27min ago
  Process: 8825 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 8825 (code=exited, status=0/SUCCESS)
oct. 10 19:24:48 MONORDI systemd[1]: Starting PostgreSQL RDBMS...
oct. 10 19:24:48 MONORDI systemd[1]: Started PostgreSQL RDBMS.


Quand j'essaye de voir quel port est utilisé (pg_lsclusters), j'obtiens ce message d'erreur :

Ver  Cluster   Port    Status    Owner           Data directory                                 Log file
11    main      5432   down     utilisateur1    /home/utilisateur1/DonneesSIG/     /var/log/postgresql/postgresql-11-main.log


En ouvrant le fichier de log, je m'aperçois que le système de base de données est arrêté depuis le 26/09 (date originelle de mon problème), la purge/ré-installation n'a donc pas eu d'effet sur mon problème sad

/var/log/postgresql/postgresql-11-main.log
2021-09-26 13:01:51.253 CEST [4509] root@adress FATAL:  le rôle « root » n'existe pas
2021-09-26 13:08:21.769 CEST [3850] postgres@postgres FATAL:  arrêt des connexions suite à la demande de l'administrateur
2021-09-26 13:08:21.772 CEST [3988] postgres@tp1 FATAL:  arrêt des connexions suite à la demande de l'administrateur
2021-09-26 13:08:21.781 CEST [26603] LOG:  a reçu une demande d'arrêt intelligent
2021-09-26 13:08:21.808 CEST [26603] LOG:  processus en tâche de fond « logical replication launcher » (PID 26610) quitte avec le code de sortie 1
2021-09-26 13:08:21.809 CEST [26605] LOG:  arrêt en cours
2021-09-26 13:08:22.065 CEST [26603] LOG:  le système de base de données est arrêté


Voici ce que j'obtiens quand j'essaye de lancer le service :

$ sudo service postgresql@11-main start
Job for postgresql@11-main.service failed because the service did not take the steps required by its unit configuration.
See "systemctl status postgresql@11-main.service" and "journalctl -xe" for details.


Le statut du service me renvoie :

$ systemctl status postgresql@11-main.service
● postgresql@11-main.service - PostgreSQL Cluster 11-main
   Loaded: loaded (/lib/systemd/system/postgresql@.service; enabled-runtime; vendor preset: enabled)
   Active: failed (Result: protocol) since Sun 2021-10-10 19:35:29 CEST; 19s ago
  Process: 10488 ExecStart=/usr/bin/pg_ctlcluster --skip-systemctl-redirect 11-main start (code=exited, status=1/FAILURE)

Et le journal :

$ journalctl -xe
oct. 10 19:35:29 MONORDI postgresql@11-main[10488]: Error: Config owner (postgres:120) and data owner (utilisateur1:1000) do not match, and config owner is not root
oct. 10 19:35:29 MONORDI systemd[1]: postgresql@11-main.service: Can't open PID file /run/postgresql/11-main.pid (yet?) after start: No such file or directory
oct. 10 19:35:29 MONORDI systemd[1]: postgresql@11-main.service: Failed with result 'protocol'.
-- Subject: Unit failed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- The unit postgresql@11-main.service has entered the 'failed' state with result 'protocol'.
oct. 10 19:35:29 MONORDI systemd[1]: Failed to start PostgreSQL Cluster 11-main.
-- Subject: L'unité (unit) postgresql@11-main.service a échoué
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- L'unité (unit) postgresql@11-main.service a échoué, avec le résultat failed.
oct. 10 19:35:29 MONORDI polkitd(authority=local)[8706]: Unregistered Authentication Agent for unix-process:10478:67073 (system bus name :1.443, object path /org/freede
oct. 10 19:35:43 MONORDI sudo[10492]:   utilisateur1 : TTY=unknown ; PWD=/home/utilisateur1 ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/dpkg_lock_check.sh
oct. 10 19:35:43 MONORDI sudo[10492]: pam_unix(sudo:session): session opened for user root by (uid=0)
oct. 10 19:35:43 MONORDI sudo[10492]: pam_unix(sudo:session): session closed for user root
oct. 10 19:35:43 MONORDI sudo[10495]:   utilisateur1 : TTY=unknown ; PWD=/home/utilisateur1 ; USER=root ; COMMAND=/usr/bin/mint-refresh-cache
oct. 10 19:35:43 MONORDI sudo[10495]: pam_unix(sudo:session): session opened for user root by (uid=0)
oct. 10 19:35:46 MONORDI dbus-daemon[6669]: [system] Activating via systemd: service name='org.freedesktop.PackageKit' unit='packagekit.service' requested by ':1.586' (
oct. 10 19:35:46 MONORDI systemd[1]: Starting PackageKit Daemon...
-- Subject: L'unité (unit) packagekit.service a commencé à démarrer
-- Defined-By: systemd
-- Support: https://www.debian.org/support


Le résultat est sensiblement le même si j'essaye de lancer le service avec l'utilisateur postgres (après un su - postgres) :

$ journalctl -xe
-- L'unité (unit) postgresql@11-main.service a commencé à démarrer.
oct. 10 19:37:09 MONORDI postgresql@11-main[12543]: Error: Config owner (postgres:120) and data owner (utilisateur1:1000) do not match, and config owner is not root
oct. 10 19:37:09 MONORDI systemd[1]: postgresql@11-main.service: Can't open PID file /run/postgresql/11-main.pid (yet?) after start: No such file or directory
oct. 10 19:37:09 MONORDI systemd[1]: postgresql@11-main.service: Failed with result 'protocol'.
-- Subject: Unit failed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- The unit postgresql@11-main.service has entered the 'failed' state with result 'protocol'.
oct. 10 19:37:09 MONORDI systemd[1]: Failed to start PostgreSQL Cluster 11-main.
-- Subject: L'unité (unit) postgresql@11-main.service a échoué
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- L'unité (unit) postgresql@11-main.service a échoué, avec le résultat failed.
oct. 10 19:37:09 MONORDI polkitd(authority=local)[8706]: Unregistered Authentication Agent for unix-process:12507:448956 (system bus name :1.624, object path /org/freed


Il semble donc que ce soit un problème d'utilisateur... mais, comme je l'ai mentionné au début, je débute sur PostgreSQL et ne comprends pas d'où vient le problème (je n'ai rien changé au niveau des utilisateurs... enfin je crois roll).


Est-ce que quelqu'un aurait une idée d'où provient ce problème et comment le résoudre ?


Merci d'avance de votre aide potentielle wink

Hors ligne

#2 11/10/2021 08:17:47

gleu
Administrateur

Re : Impossible de relancer le système de base de données

Comme le disent les traces, les fichiers de config ont pour propriétaire postgres et les fichiers de données ont pour propriétaire utilisateur1. En soit, ce n'est pas bien grave mais ça montre qu'il y a un soucis. Ils devraient avoir le même propriétaire. Tout dépend si vous voulez démarrer PostgreSQL avec l'utilisateur postgres (ce qui est fait par défaut) ou en tant qu'utilisateur1. Je suppose que les scripts de démarrage utilisent postgres, donc il serait certainement mieux de tout mettre avec l'utilisateur postgres. Mais bon, vous devez déjà corriger ça.


Guillaume.

Hors ligne

#3 13/10/2021 20:07:29

marpa
Membre

Re : Impossible de relancer le système de base de données

Salut,

En effet... je ne sais pas comment je n'ai pas vu ça hmm ... la fatigue certainement.


Il s'avère qu'étant sur un dual-boot, j'avais mis le répertoire de données sur le disque partagé entre les systèmes (afin de pouvoir y accéder ultérieurement avec un PostgreSQL depuis Windows... au cas où). Évidemment, cette partition est en ntfs et donc ne gère pas bien les droits.


J'ai donc changé le répertoire des données et l'ai mis sur une partition ext4, avec les droits pour l'utilisateur postgres et j'ai fait le changement de destination dans le fichier de config.


Malheureusement, le problème persiste, bien qu'il semble que ce ne soit pas exactement la même chose.
Effectivement, il y a toujours un problème d'accès au répertoire de données.. que je lance la commande avec l'utilisateur1 ou avec postgres (même avec un sudo).
Au cas où j'ai même mis utilisateur1 dans le groupe postgres et postgres dans le groupe utilisateur1... et rien n'y fait sad

$ journalctl -xe
-- L'unité (unit) postgresql@11-main.service a commencé à démarrer.
oct. 13 19:50:17 MONORDI postgresql@11-main[29928]: Error: /usr/lib/postgresql/11/bin/pg_ctl /usr/lib/postgresql/11/bin/pg_ctl start -D /home/utilisateur1/DonneesSIG/
oct. 13 19:50:17 MONORDI postgresql@11-main[29928]: pg_ctl : n'a pas pu accéder au répertoire « /home/utilisateur1/DonneesSIG/ » : Permission non accordée
oct. 13 19:50:17 MONORDI systemd[1]: postgresql@11-main.service: Can't open PID file /run/postgresql/11-main.pid (yet?) after start: No such file or directory
oct. 13 19:50:17 MONORDI systemd[1]: postgresql@11-main.service: Failed with result 'protocol'.
-- Subject: Unit failed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- The unit postgresql@11-main.service has entered the 'failed' state with result 'protocol'.
oct. 13 19:50:17 MONORDI systemd[1]: Failed to start PostgreSQL Cluster 11-main.
-- Subject: L'unité (unit) postgresql@11-main.service a échoué
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--

Quelqu'un aurait-il une idée d'où peut venir ce problème de droits ?


Merci d'avance wink

Dernière modification par marpa (13/10/2021 20:14:55)

Hors ligne

#4 13/10/2021 22:27:17

gleu
Administrateur

Re : Impossible de relancer le système de base de données

On va reprendre à 0. PostgreSQL est très strict sur les droits. Tous les répertoires à partir du répertoire de données principal doivent être en 700, et tous les fichiers en 600. Le propriétaire des fichiers sera celui qui lance le service. Je vous conseille fortement de vous faciliter la vie, et le plus simple pour ça est de ne pas placer le répertoire des données dans le HOME d'un autre utilisateur.

Petit point supplémentaire, même si je comprends l'envie de pouvoir utiliser son répertoire de données PostgreSQL sur un dual boot, vous ne pouvez pas le faire. Un répertoire de données dépend fortement de l'architecture matérielle et logicielle. Pour le dire simplement, vous ne pouvez pas utiliser un répertoire de données créé sous Linux sur une machine Windows, ou HPUX, ou OS X, etc. Et inversement. Même entre distributions Linux, cela peut poser problème. En fait, même entre versions d'une même distribution Linux. Donc encore une fois, facilitez-vous la vie. Ne pensez pas pouvoir faire ce genre de choses, cela ne fonctionnera qu'en de très rares cas.


Guillaume.

Hors ligne

Pied de page des forums