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
к себе.