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 05/10/2021 09:40:43

genamiga
Membre

PostgreSQL 14 authentification

Bonjour,

J'ai un serveur sous Windows 10 Pro avec un serveur de production PG13 qui fonctionne nickel. J'ai fais un backup (pg_dumpall) du cluster pour faire des tests sous PG14.

J'installe PG14 et j'essaie de faire un restore avec psql.

Impossible de m'y connecter...

psql -U postgres -p 5433 -W
Mot de passe :
psql: erreur : la connexion au serveur sur « localhost » (::1), port 5433 a échoué : FATAL:  authentification par mot de passe échouée pour l'utilisateur  « postgres »

Je fais toujours comme cela pour tester les nouvelles versions...cela a toujours fonctionner...

Je n'ai touché à aucun fichier de configuration après l'installation et suis en direct sur le serveur.

Une idée ?

Merci d'avance.

Hors ligne

#2 05/10/2021 14:17:33

dverite
Membre

Re : PostgreSQL 14 authentification

Il faut commençer par regarder le pg_hba.conf en vigueur avec l'instance PostgreSQL 14.

Au passage, ne pas utiliser l'option -W avec psql. Sans l'option -W, s'il y a besoin d'un mot de passe, psql va le demander et s'il n'y en a pas besoin, il ne va pas le demander. Avec -W il va le demander même s'il n'est pas nécessaire.

Hors ligne

#3 05/10/2021 14:58:00

genamiga
Membre

Re : PostgreSQL 14 authentification

Dans le fichier pg_hba.conf, il y a ceci.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     scram-sha-256
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     scram-sha-256
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256

Sans l'option -W, psql va cherche le mot de passe dans le fichier  %appdata%/postgresql/pgpass.conf

J'ai vérifié dans le fichier, le mot de passe est correct...Et j'ai utiliser l'option -W pour forcer la demande.

Je ne comprends pas ce qui se passe ...

Avec PG13 le mot de passe était en md5 par défaut et avec PG14 c'est scram-sha-256... Ce serait lié à mon problème ?

Dernière modification par genamiga (05/10/2021 15:01:23)

Hors ligne

#4 05/10/2021 15:12:46

dverite
Membre

Re : PostgreSQL 14 authentification

La cause la plus probable est effectivement le scram-sha-256 dans pg_hba.conf (qui est un choix de l'installeur).

Avec scram-sha-256 requis dans pg_hba.conf, si les mots de passe sont encodés avec md5 dans la base, il me semble que la connexion n'est pas autorisée.


Or quand on fait un pg_dumpall d'une instance avec les mots de passe au format md5, le rechargement de ce dump recréé des mots de passe en md5.


Ce qu'il faudrait faire:

1) mettre trust dans pg_hba.conf pour pouvoir se connecter à l'instance sans MDP.
2) une fois connecté, changer le(s) mot(s) de passe quitte à remettre les mêmes (\password sous psql). Là ils vont être encodés en scram-sha-256 dans la base.
3) remettre scram-sha-256 dans pg_hba

Dernière modification par dverite (05/10/2021 15:14:04)

Hors ligne

#5 06/10/2021 09:22:08

genamiga
Membre

Re : PostgreSQL 14 authentification

ça ne fonctionnait pas...

Voici ce que j'ai fais :

- déinstallation de PG14
- installation PG14
- avant de me connecter j'ai remplacé le scram-sha-256 par md5 dans le fichier pg_hba.conf
- restoration de mon backup de cluster PG14 (fait avec pg_dump_all)

Et la tout fonctionne parfaitement.

Hors ligne

Pied de page des forums