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

#1 22/05/2017 12:01:30

superette
Membre

pg_ident.conf et pg_hba.conf

Bonjour,

Les deux fichiers stipulés en objet contiennent les informations suivantes :

pg_ident.conf :

# MAPNAME       SYSTEM-USERNAME PG-USERNAME
mappingroot     root            postgres

pg_hba.conf :

# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             postgres                                peer map=mappingroot
local   all             all                                     peer

La configuration a été rechargée plusieurs fois (select pg_reload_conf() ; )

Lorsque, connectée avec l'utilisateur root, je tente de me connecter à PostgreSQL, j'obtiens l'erreur suivante :

root@bobbynette:~# psql -p 5433
psql: FATAL:  role "root" does not exist

Je pensais que justement, avec l'association ident, root allait être considéré comme s'il était postgres, et donc que je n'avais pas à créer utilisateur et db dans l'instance concernée?

D'avance merci.

Dernière modification par superette (22/05/2017 12:02:38)

Hors ligne

#2 22/05/2017 12:18:16

rjuju
Administrateur

Re : pg_ident.conf et pg_hba.conf

Mise à part qu'une connexion depuis root me semble une mauvaise idée, il est quand même nécessaire de préciser l'utilisateur pour que le mapping se fasse (on peut tout à fait autoriser un utilisateur à prendre plusieurs identités).


Donc « psql -U postgres » devrait marcher (ou un export PGUSER=postgres dans le .bashrc).

Hors ligne

#3 22/05/2017 13:29:18

superette
Membre

Re : pg_ident.conf et pg_hba.conf

Merci, c'est très clair et ça marche.

Je note le warning sur le fait que la connexion avec root est une mauvaise idée (mais pourquoi? puisqu'on peut dans tous les cas faire un su - postgres avec root ?)

@pluche !

Hors ligne

#4 22/05/2017 13:43:38

rjuju
Administrateur

Re : pg_ident.conf et pg_hba.conf

Au minimum pour éviter de se connecter en root si on n'a besoin que d'une connexion à postgres smile

Hors ligne

#5 22/05/2017 16:08:58

superette
Membre

Re : pg_ident.conf et pg_hba.conf

Question subsidiaire smile 

Si je définis mon fichier pg_hba.conf de cette manière :

# TYPE  DATABASE        USER            ADDRESS                         METHOD
local   all             postgres                                        peer
local   all             perette                                         peer map=perettemapping
local   all             perette                                         peer map=rootmapping
# MAPNAME      SYSTEM-USERNAME    PG-USERNAME
rootmapping      root                           perette
perettemapping  sup                           perette

Et bien je ne peux pas utiliser la connexion  avec root :

sup@bobbynette:~$ psql -p 5433 -U perette -d postgres

fonctionne très bien tandis qu'avec root cela retourne une erreur.

root@bobbynette:~# psql -p 5433 -U perette -d postgres
psql: FATAL:  Peer authentication failed for user "perette"

C'est normal puisque pg_hba.conf est lu dans l'ordre et que les deux demandes vont matcher la première ligne et que peer map=perettemapping fonctionne seulement pour sup et pas pour root.

Ceci étant dit, du coup faut-il partir sur une seule association base/user par mapping d'utilisateur système ou il existe une manière de contourner ce truc ?


*Edit :


En rédigeant les fichier pg_ident.conf et pg_hba.conf de cette manière cela fonctionne :

# MAPNAME        SYSTEM-USERNAME PG-USERNAME
perettemapping   root                        perette
perettemapping   sup                         perette
# TYPE  DATABASE        USER            ADDRESS                         METHOD
local   all             postgres                                        peer
local   all             perette                                         peer map=perettemapping

Dernière modification par superette (22/05/2017 16:22:51)

Hors ligne

Pied de page des forums