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 09/09/2013 19:21:44

bofxyz
Membre

impossible d'utiliser password pour se connecter, seul trust marche

Bonjour

Je veux que ma connexion à mon serveur PostgeSql distant ne soit autorisée qu'en donnant un password.

Dans mon pg_hba.conf je mets :
host  all   all   0.0.0.0/0   password
Rien ne marche, pour aucun utilisateur même postgres (le rôle postgres et l'utilisateur postgres ont le même password)
Par contre :
host  all   all   0.0.0.0/0   trust
aucun problème (ce qui est normal).

Qui peut me dire où est mon erreur ?

Merci

Hors ligne

#2 09/09/2013 19:30:18

rjuju
Administrateur

Re : impossible d'utiliser password pour se connecter, seul trust marche

Bonjour,

quel est le message d'erreur retourné par postgres ? A priori la seule erreur serait due à un mot de passe erroné.

Sinon, il est préférable de choisir la méthode "md5" plutôt que password, sinon le mot de passe est transmis en clair sur le réseau.

Hors ligne

#3 10/09/2013 12:05:47

lemjid
Membre

Re : impossible d'utiliser password pour se connecter, seul trust marche

Bonjour,

Je suis d'accord avec Julien pour md5.
Pour la connexion à distance il faut peut être penser à désactiver le FW sur le serveur de la base de donner ou autoriser la machine à se connecter dessus en plus la vérification du fichier pg_hba.conf s'il est bien fait.
Pour finir le message d'erreur sera la moitié de la réponse.

Bien à vous

Hors ligne

#4 10/09/2013 16:59:19

bofxyz
Membre

Re : impossible d'utiliser password pour se connecter, seul trust marche

Le message est peu explicite pour moi :

2013-09-08 16:36:19 CEST LOG:  unexpected EOF on client connection
2013-09-08 16:37:00 CEST LOG:  could not receive data from client: Connection reset by peer

Hors ligne

#5 11/09/2013 08:57:40

rjuju
Administrateur

Re : impossible d'utiliser password pour se connecter, seul trust marche

Il n'y a pas d'autre message d'erreur dans les logs ? Sinon cela ressemble effectivement à un firewall ou un autre équipement réseau qui aurait coupé la connexion.

Hors ligne

#6 11/09/2013 15:40:18

bofxyz
Membre

Re : impossible d'utiliser password pour se connecter, seul trust marche

Mon server PostgreSQL 9.1 est sous ubuntu 12.
J'ai fait
    ufw disabled
Ca ne change rien !
J'accède à tous les services du serveur ubuntu sans problème.

Hors ligne

#7 11/09/2013 16:18:56

rjuju
Administrateur

Re : impossible d'utiliser password pour se connecter, seul trust marche

Essayez depuis le serveur de vous connecter en local avec mot de passe : psql -h 127.0.0.1 -W -U utilisateur.

Si cela fonctionne mais pas depuis une autre machine, c'est le réseau. Sinon il faudrait afficher le reste des informations dans les logs pour voir l'erreur.

Hors ligne

#8 11/09/2013 16:35:14

bofxyz
Membre

Re : impossible d'utiliser password pour se connecter, seul trust marche

Aïe !

postgres@xxx : ~ >> psql -h 127.0.0.1 -W -U robert
Password for user robert:
2013-09-11 16:30:25 CEST FATAL:  password authentication failed for user "robert"
2013-09-11 16:30:25 CEST FATAL:  password authentication failed for user "robert"
psql: FATAL:  password authentication failed for user "robert"
FATAL:  password authentication failed for user "robert"

Voici le contenu de pg_hba.conf :
# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            password
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5
host  all   all   0.0.0.0/0   trust


Toujours rien de plus dans les logs.

Hors ligne

#9 11/09/2013 16:57:57

Bidou
Membre

Re : impossible d'utiliser password pour se connecter, seul trust marche

C'est juste le mot de passe que vous utilisez pour l'utilisateur robert qui n'est pas le bon.

Hors ligne

#10 12/09/2013 15:06:35

bofxyz
Membre

Re : impossible d'utiliser password pour se connecter, seul trust marche

De quel utilisateur parlez vous ?
robert : utilisateur ubuntu
robert : rôle de connexion
robert : autre...

Hors ligne

#11 12/09/2013 22:42:23

gleu
Administrateur

Re : impossible d'utiliser password pour se connecter, seul trust marche

Utilisateur au niveau PostgreSQL (ce que vous appelez le rôle de connexion).


Guillaume.

Hors ligne

#12 14/09/2013 15:22:22

bofxyz
Membre

Re : impossible d'utiliser password pour se connecter, seul trust marche

J'utilise pgadmin3 sur osx7.5

J'ai changé le mot de passe du rôle de connexion avec pgadmin3.
Idem avec psql.

Toujours impossible de me connecter.

Il doit y avoir qq chose incorrect qq part, mais je ne vois pas où ?

Hors ligne

#13 14/09/2013 16:22:21

rjuju
Administrateur

Re : impossible d'utiliser password pour se connecter, seul trust marche

Y a-t-il toujours le même message d'erreur dans les logs (FATAL:  password authentication failed for user "robert") ?

Si c'est le cas, vous avez peut être un problème sur le mot de passe saisi (caractère accentué, caps lock ...), où vous avez plusieurs instances de démarrées.

Hors ligne

#14 16/09/2013 16:24:12

bofxyz
Membre

Re : impossible d'utiliser password pour se connecter, seul trust marche

Je ne pense vraiment pas que ce soit un problème d'écriture du mot de passe: j'utilise les caractères comme "6Me:=", ce qui est standard.

Comment puis-je savoir les instances démarrées ?
Dans "ps -aux" j'ai les lignes :
root        11009  0.0  0.3   9996  3428 ?        Ss   16:16   0:00 sshd: postgres [priv]
postgres 11100  0.0  0.1   9996  1572 ?        S    16:17   0:00 sshd: postgres@pts/1
...
postgres 18259  0.0  0.7  49756  7844 ?        S    Sep14   0:13 /usr/lib/postgresql/9.1/bin/postgres -D /var/lib/postgresql/9.1
postgres 18261  0.0  0.1  49756  2040 ?        Ss   Sep14   0:15 postgres: writer process                                     
postgres 18262  0.0  0.1  49756  1432 ?        Ss   Sep14   0:15 postgres: wal writer process                                 
postgres 18263  0.0  0.2  50468  2696 ?        Ss   Sep14   0:12 postgres: autovacuum launcher process                         
postgres 18264  0.0  0.1  20260  1560 ?        Ss   Sep14   0:16 postgres: stats collector process

Hors ligne

#15 16/09/2013 16:38:39

Bidou
Membre

Re : impossible d'utiliser password pour se connecter, seul trust marche

Vous n'auriez pas de message dans le fichier pg_log si l'instance n'était pas démarrée.
Je pense comme rjuju qu'il s'agit ici d'un problème de mot de passe.
Pour l'instance il s'agit de celle dont les datas se trouvent dans /var/lib/postgresql/9.1

Hors ligne

#16 20/09/2013 15:54:01

bofxyz
Membre

Re : impossible d'utiliser password pour se connecter, seul trust marche

Merci
Mon mot de passe comprend : majuscules, minuscules, chiffres, =, :
Il marche depuis longtemps, notamment avec pgadmin3

Hors ligne

#17 20/09/2013 15:58:46

rjuju
Administrateur

Re : impossible d'utiliser password pour se connecter, seul trust marche

À tout hasard est-ce que vous passez par un pooler de connexion ?

Hors ligne

#18 24/09/2013 13:22:14

mybofy
Membre

Re : impossible d'utiliser password pour se connecter, seul trust marche

Qu'est-ce que "pooler connexion" ?

Hors ligne

#19 24/09/2013 13:24:14

rjuju
Administrateur

Re : impossible d'utiliser password pour se connecter, seul trust marche

pgbouncer ou pgpool par exemple

Hors ligne

#20 24/09/2013 14:04:32

mybofy
Membre

Re : impossible d'utiliser password pour se connecter, seul trust marche

pgbouncer et pgpool2 sont visibles, mais pas installés.

Hors ligne

#21 25/09/2013 16:45:25

mybofy
Membre

Re : impossible d'utiliser password pour se connecter, seul trust marche

Après pas mal de recherches et d'essais.


Je n'ai pas un problème d'écriture du mot de passe : "aaaaaaaa" ne marche pas tout autant.
Je n'ai pas un problème de réseau : avec METHOD=trust la connexion à distance se fait sans problème.


J'ai un problème quelque part lorsque METHOD=password dans pg_hba.conf


J'ai examiné plusieurs fois les fichiers de configurations dans /etc/postgresql/9.1/main
Je n'ai rien vu qui puisse expliquer mon problème selon moi.


Faut-il réinstaller PostgreSQL ?


Si je sauvegarde toutes les bases de données de mon serveur distant
Si je supprime l'installation existante de PG et tous les fichiers associés à PG, sauf /var/lib/postgresql/9.1/main qui contient les données, je crois
Si je réinstalle PG
Si je restaure les BdD
Y a-t-il un risque de perdre toutes mes données ?

Hors ligne

#22 25/09/2013 17:01:37

gleu
Administrateur

Re : impossible d'utiliser password pour se connecter, seul trust marche

Réinstaller ne devrait rien changer.

Si vous pouviez nous donner exactement toutes les opérations que vous faites, le contenu du fichier de configuration que vous modifiez, etc, ce serait plus simple pour vous apporter une aide.

Quant à votre "procédure" de sauvegarde/réinstallation/restauration, à priori, vous ne risquez pas de perdre quelque chose, à moins d'une fausse manipulation.


Guillaume.

Hors ligne

#23 25/09/2013 18:06:16

mybofy
Membre

Re : impossible d'utiliser password pour se connecter, seul trust marche

Voici les fichiers de configuration.

...>> vi environment
    "vide"
..>> vi pg_ctl.conf
pg_ctl_options = ''
...>> vi pg_hba.conf
# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            password
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5
host  all   all   0.0.0.0/0   trust
...>> vi pg_ident
    "vide"
..>> vi vi postgresql.conf // J'ai supprimé la plupart des lignes commentées
#------------------------------------------------------------------------------
# FILE LOCATIONS
#------------------------------------------------------------------------------

# The default values of these variables are driven from the -D command-line
# option or PGDATA environment variable, represented here as ConfigDir.

data_directory = '/var/lib/postgresql/9.1/main'    # use data in another directory
               # (change requires restart)
hba_file = '/etc/postgresql/9.1/main/pg_hba.conf'  # host-based authentication file
               # (change requires restart)
ident_file = '/etc/postgresql/9.1/main/pg_ident.conf' # ident configuration file
               # (change requires restart)

# If external_pid_file is not explicitly set, no extra PID file is written.
external_pid_file = '/var/run/postgresql/9.1-main.pid'      # write an extra PID file
               # (change requires restart)

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'
#listen_addresses = 'localhost'     # what IP address(es) to listen on;
               # comma-separated list of addresses;
               # defaults to 'localhost', '*' = all
               # (change requires restart)
port = 5432          # (change requires restart)
max_connections = 100         # (change requires restart)
# Note:  Increasing max_connections costs ~400 bytes of shared memory per
# connection slot, plus lock space (see max_locks_per_transaction).
#superuser_reserved_connections = 3 # (change requires restart)
unix_socket_directory = '/var/run/postgresql'      # (change requires restart)
#------------------------------------------------------------------------------
# RESOURCE USAGE (except WAL)
#------------------------------------------------------------------------------

# - Memory -

shared_buffers = 24MB         # min 128kB
               # (change requires restart)
...>>vi postmaster.opts
/usr/lib/postgresql/9.1/bin/postgres "-D" "/var/lib/postgresql/9.1/main" "-c" "config_file=/etc/postgresql/9.1/main/postgresql.conf"
...>>vi postmaster.pid
3976
/var/lib/postgresql/9.1/main
1378740363
5432
/var/run/postgresql
*
  5432001     32768
...>> vi start.conf
# Automatic startup configuration
# auto: automatically start/stop the cluster in the init script
# manual: do not start/stop in init scripts, but allow manual startup with
#         pg_ctlcluster
# disabled: do not allow manual startup with pg_ctlcluster (this can be easily
#           circumvented and is only meant to be a small protection for
#           accidents).

auto


Avec cette configuration.

...>> psql -h 127.0.0.1 -W -d BdD -U username
Password for user username:
psql: FATAL:  password authentication failed for user "username"
...>> psql -h domain.tld -W -d BdD -U username
Password for user username:
psql (9.1.9)
Type "help" for help.

BdD=> select * from plantes;
id |            nom_latin            |         nom_commun         
----+---------------------------------+-----------------------------
  1 | Achillea millefolia             | Achillée millefeuille
  2 | Agastache mexicana              | Agastache mexicaine
  3 | Agastache rupestris             | Agastache rupestre
BdD=>

La connexion locale ne marche pas, ce qui n'est pas normal.
La connexion à distance marche ce qui est normal.

Maintenant si je change
    host  all   all   0.0.0.0/0   trust
en
    host  all   all   0.0.0.0/0   password
j'obtiens
...>> psql -h domain.tld -W -d BdD -U username
Password for user username:
psql: FATAL:  password authentication failed for user "username"

Que puis-je ajouter ?

Hors ligne

#24 25/09/2013 19:53:04

gleu
Administrateur

Re : impossible d'utiliser password pour se connecter, seul trust marche

Si je comprends bien tous vos tests, ils montrent que la connexion par mot de passe ne fonctionne pas, dans aucun cas, que ce soit à distance ou pas.

Étant donné le message d'erreur que vous obtenez, j'en conclus que le mot de passe que vous saisissez n'est pas le bon.

Voici ce que je vous conseille de faire.

1. Remettez "host  all   all   0.0.0.0/0   trust" à la place de "host  all   all   0.0.0.0/0   password" dans le pg_hba.conf
2. Rechargez la configuration
3. Connectez-vous avec "psql -h domain.tld -d BdD -U username" (pas de -W, c'est inutile)
4. Exécutez "ALTER USER username PASSWORD'toto';"
5. Quittez psql
6. Remettez "host  all   all   0.0.0.0/0   password" à la place de "host  all   all   0.0.0.0/0   trust" dans le pg_hba.conf
7. Rechargez la configuration
8. Connectez-vous avec "psql -h domain.tld -d BdD -U username" (pas de -W, c'est vraiment inutile)
9. Il vous demandera le mot de passe, saisissez toto.
10. Vous devriez être connecté.
11. Quittez psql
12. Connectez-vous avec "psql -h localhost -d BdD -U username" (pas de -W, c'est vraiment inutile)
13. Il vous demandera le mot de passe, saisissez toto.
14. Vous devriez être connecté.

Si tout s'est bien passé, n'oubliez pas de changer le mot de passe par quelque chose de plus sécurisé.


Guillaume.

Hors ligne

#25 26/09/2013 15:35:44

mybofy
Membre

Re : impossible d'utiliser password pour se connecter, seul trust marche

Hélas, rien de changé.

J'ai basculé mon serveur courant sur un serveur de secours.
J'ai tout réinstallé, y compris PostgreSQL, et restauré tous mes données.
Et tout marche parfaitement pour PG !

Il y a sans doute quelque chose de pourri dans le PG de mon serveur courant, ou peut-être ailleurs que dans le PG.

Désolé pour le temps que je vous ai fait perdre.

Grand merci à tous.

Hors ligne

Pied de page des forums