PostgreSQL - l'authentification par mot de passe échoue après l'ajout de rôles de groupe

Je suis assez nouveau à Potresql. J'ai passé toute la matinée à essayer de faire fonctionner correctement les logins des utilisateurs, et je suis terriblement frustré maintenant!

donc, j'ai une base de données PostGIS, version 9.2, qui fait partie de la suite logicielle OpenGeo. Je pourrais accéder à la base de données avec l'utilisateur postgres, mais je veux faire un rôle de groupe et l'utilisateur avec l'accès à une base de données afin qu'il puisse créer des tables et mettre à jour/sélectionner/supprimer etc. dans cette base de données.

je peux créer un l'utilisateur, qui fonctionne, et je peux me connecter avec cet utilisateur. Je peux créer un rôle de groupe et lui donner des privilèges. Je peux alors ajouter l'utilisateur au rôle de groupe, et puis ne peut plus se connecter!

il est même arrivé que lorsque j'ai ajouté l'utilisateur postgres au groupe, cet utilisateur ne peut pas se connecter. - Je supprimer le groupe, mais l'incapacité de se connecter persiste.

Maintenant, j'ai joué avec pg_hba.conf beaucoup. Et je peux maintenant me connecter en tant que postgres, mais seulement si 'trust' est activé, et je vous ne pouvez pas vous connecter avec N'importe quel logiciel, tel que PGAdminIII.

ce serait génial d'obtenir quelques conseils sur ce qui va mal, et d'activer à nouveau les logins authentifiés.

pg_hba:

Code:
# Database administrative login by Unix domain socket
local   all             postgres                                trust
local all gisadmin trust

# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all         opengeo                           md5
local   all         opengeo                           md5

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host all gisadmin localhost trust


# 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

pour conclure, je voudrais pouvoir me connecter via un tunnel SSH. Je pouvais le faire à l'origine avec l'utilisateur 'postgres', mais maintenant que j'ai ajouté et retiré cet utilisateur d'un groupe, je ne peux pas.

Edit: l'erreur message...

si je me connecte via le tunnel SSH dans PGAdmin avec le mot de passe correct, j'obtiens l'erreur " FATAL: l'authentification mot de passe a échoué pour l'utilisateur ..."

si j'essaie de me connecter via le tunnel SSH dans PGAdmin sans mot de passe, pendant que L'option de confiance est activée, j'obtiens l'erreur:"error connecting to the server: fe_sendauth: no password provided".

la première erreur se produit encore lors de la connexion locale, juste via SSH et psql, mais la deuxième l'un s'en va et je peux me connecter.

sortie de du+: enter image description here

sortie de dg+ enter image description here

4
demandé sur Alex Leith 2013-01-23 04:21:59

2 réponses

je pense que ce comportement peut être lié à pgAdminIII, parce que j'ai des problèmes similaires et il semble chaque fois que je me connecte à mon db comme postgres en utilisant pgAIII et regarder l'onglet Définition dans les propriétés de l'utilisateur, la case à cocher pour la" date d'expiration " est cochée et soit 1/1/1970 ou 31/12/1969 sont fixés comme date d'expiration. La solution proposée par Daniel fonctionne, donc il est évident que le problème est l'expiration du mot de passe.

Semble que ce bug a été corrigé dans pgAdmin 1.16.2 comme vous pouvez le voir dans le changelog:

http://www.pgadmin.org/development/changelog.php

Cheers

6
répondu Raúl Nanclares 2013-02-15 00:33:39

dans la sortie \du+ , le mot de passe valide jusqu'au 01/01/1970 00:00:00+00... semble assez suspect. À proprement parler, les mots de passe pour gisadmin , postgisrw et postgres ne sont plus valides, ce qui pourrait expliquer pourquoi les méthodes d'authentification basées sur le mot de passe échouent pour ces comptes.

Vous pouvez essayer ALTER USER username valid until 'infinity' sur ces comptes et voir si cela résout le problème.

également lors de la connexion à PG à travers un tunnel SSH, sachez que les entrées pg_hba.conf commençant par host sont ignorées. Ces entrées ne sont considérées que pour les connexions aux sockets de domaines Unix. Parfois les utilisateurs confondent cela avec des connexions de localhost à lui-même.

2
répondu Daniel Vérité 2013-01-23 18:53:04