PostgreSQL - аутентификация паролей после добавления ролей групп

Я новичок в PostreSQL. Я потратил все утро, пытаясь заставить пользователей работать правильно, и я сейчас ужасно разочарован!

Итак, у меня есть база данных PostGIS, версия 9.2, как часть пакета программного обеспечения OpenGeo. Я мог бы получить доступ к базе данных с пользователем postgres, но хочу сделать роль группы и пользователя доступ к базе данных, чтобы она могла создавать таблицы и обновлять/выбирать/удалять и т.д. В этой базе данных.

Я могу создать пользователя, который работает, и я могу войти в систему с этим пользователем. Я могу создать групповую роль и назначить привилегии для этой роли. Затем я могу добавить пользователя в роль группы, а затем не может БОЛЬШЕ ВХОДИТЬ!

Даже получилось так, что, когда я добавил пользователей postgres в группу, этот пользователь не может войти в систему. Я удаляю группу, но не удается войти в систему.

Теперь я много играл с pg_hba.conf. И теперь я могу войти в качестве postgres, но только если включено доверие, и я не могу войти в систему с любым программным обеспечением, таким как PGAdminIII.

Было бы здорово получить советы относительно того, что происходит не так, и снова включить аутентифицированные логины.

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

Как последнее замечание, я хотел бы иметь возможность входа в систему через туннель SSH. Я мог бы сделать это первоначально с пользователем postgres, но теперь, когда я добавил и удалил этого пользователя из группы, я не могу.

Изменить: сообщения об ошибках...

Если я войду через SSH-туннель в PGAdmin с правильным паролем, я получаю сообщение об ошибке "FATAL: аутентификация пароля для пользователя..."

Если я попытаюсь войти через SSH-туннель в PGAdmin без пароля, а параметр доверия установлен, я получаю сообщение об ошибке: "Ошибка подключения к серверу: fe_sendauth: без пароля".

Первая ошибка все еще происходит при локальном входе в систему, только через SSH и psql, но вторая уходит, и я могу войти.

вывод\du +: enter image description here

вывод\dg + enter image description here

Ответ 1

Я думаю, что это поведение может быть связано с pgAdminIII, потому что у меня похожие проблемы, и каждый раз, когда я подключаюсь к своему db как postgres, используя pgAIII, и смотрю на вкладку определения в свойствах пользователя, установите флажок для "дата истечения срока действия", и либо 1/1/1970, либо 31/12/1969 устанавливаются как истекающая дата. Решение, предложенное Daniel, работает, поэтому очевидно, что проблема заключается в истечении срока действия пароля.

Кажется, что эта ошибка была исправлена ​​в pgAdmin 1.16.2, как вы можете видеть в журнале изменений:

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

Приветствия

Ответ 2

В выводе \du+ Пароль действует до 1970-01-01 00: 00: 00 + 00... выглядит довольно подозрительно. Строго говоря, пароли для gisadmin, postgisrw и postgres уже недействительны, поэтому можно объяснить, почему методы аутентификации на основе пароля терпят неудачу для этих учетных записей.

Вы можете попробовать ALTER USER username valid until 'infinity' на этих учетных записях и посмотреть, разрешает ли это проблему.

Также, когда вы подключаетесь к PG через туннель SSH, имейте в виду, что записи pg_hba.conf, начинающиеся с host, игнорируются. Эти записи рассматриваются только для подключений к сокетам домена Unix. Иногда пользователи путают это с подключением от localhost к себе.