pgsql может подключаться, pgadmin не может.

Вопрос или проблема

Мы хотим только 1 роль, владеющую 1 базой данных, Domain-unix Socket, без пароля

postgres@luciol-essai:~$ more /etc/postgresql/8.4/main/pg_hba.conf | grep jppstphp
local   essais_php  jppstphp                       trust
postgres@luciol-essai:~$ 

Успех с psql :

envol@luciol-essai:~$ psql -U jppstphp essais_php
psql (8.4.15)
essais_php=> 

Неудача с pgadmin3 :

Это ошибка.

Ошибка подключения к серверу: FATAL:  authentification Ident ?chou?e pour l'utilisateur << jppstphp >>

Похоже, PgAdmin-III пытается подключиться к localhost или 127.0.0.1, поэтому он использует TCP/IP, тогда как psql не получает спецификацию хоста, поэтому использует UNIX-сокеты (local).

Оставьте поле имени хоста в pgadmin3 пустым или добавьте еще одну запись в pg_hba.conf для host essais_php jppstphp 127.0.0.1/32 trust.

Вам следует проверить ваш файл pg_hba.conf целиком, порядок директив важен. Я думаю, вы оставили в нем строку по умолчанию:

local   all         all                               ident

Если эта строка присутствует перед вашей конкретной строкой о jppstphp, сервер postgresql сначала попытается идентифицировать вас по вашему имени пользователя UNIX, которое, похоже, envol. Это не удастся, потому что вы пытаетесь подключиться как пользователь/роль postgres jppstphp.

Если моё предположение верно, удаление вышеуказанной строки (и, возможно, аналогичной записи с аутентификацией паролем md5) или размещение вашей строки jppstphp перед ней должно позволить вам подключиться через локальный сокет.

Для подключения через локальный сокет достаточно оставить поле хоста пустым, как вы и сделали.

Я столкнулся с той же проблемой с psql через командную строку, подключаясь, и pgAdmin не подключался к RDS на AWS. У меня было установлено, что мой RDS доступен для общего доступа. Я убедился, что мои ACL и группы безопасности были полностью открыты, и всё равно проблема, поэтому я сделал следующее:
sudo find . -name *.conf
затем sudo nano ./data/pg_hba.conf
затем добавил в верхнюю часть директив в файле pg_hba.conf host all all 0.0.0.0/0 md5
и pgAdmin автоматически вошел в систему.

К тому же, мой RDS находился в моем VPC по умолчанию. У меня был идентичный экземпляр RDS в моем не по умолчанию VPC с идентичной группой безопасности, настройками ACL и группами безопасности к моему VPC по умолчанию, и я не смог его запустить. Не знаю почему, но это на другой день.

Я столкнулся с проблемой на своем Mac, и я почти сошел с ума.

Я ошибочно нажал “Нет” давным-давно на всплывающее окно, которое iOS запрашивает, когда приложение пытается получить доступ к локальному IP в первый раз и спрашивает, разрешено ли приложению это делать.

Перейдите в настройки > конфиденциальность и безопасность > локальная сеть и проверьте, что pgAdmin разрешен…

Ответ или решение

Вопрос о подключении к PostgreSQL через psql и pgAdmin, где psql успешно соединяется, а pgAdmin выдает ошибки, является довольно распространенной проблемой. Данная ситуация может вызывать недоумение, особенно если используются одинаковые учетные данные для подключения. Давайте рассмотрим основные причины, подходы к решению данной проблемы и необходимые проверки.

1. Проверка конфигурации pg_hba.conf

В вашем случае конфигурация файла pg_hba.conf имеет ключевое значение. Сейчас мы видим следующее:

local   essais_php  jppstphp                       trust

Это означает, что для подключения к базе данных essais_php от пользователя jppstphp будет применяться метод аутентификации trust, если используется UNIX-сокет. Однако, вы упомянули, что pgAdmin пытается подключиться, возможно, через TCP/IP, что приводит к ошибке аутентификации.

2. Различие в методах подключения

Когда вы используете psql, вы не указываете хост, и он использует локальный UNIX-сокет. Напротив, pgAdmin, как правило, пытается подключиться через TCP/IP, если в поле хоста указано localhost или 127.0.0.1. Это приводит к тому, что pgAdmin будет искать подходящую запись в pg_hba.conf, и если она недостаточно специфична, это может вызвать ошибку:

FATAL:  authentification Ident ?chou?e pour l'utilisateur << jppstphp >>

3. Настройка pg_hba.conf для разрешения подключения через TCP/IP

Чтобы разрешить pgAdmin подключаться, вам необходимо добавить соответствующую запись в pg_hba.conf. Например:

host    essais_php     jppstphp      127.0.0.1/32   trust

Эта строка позволит пользователю jppstphp подключаться к базе essais_php через TCP с локального адреса. Убедитесь, что эта запись находится перед любой общей записью, такой как local all all ident.

4. Порядок записей в pg_hba.conf

Порядок записей в pg_hba.conf имеет значение: PostgreSQL рассматривает записи сверху вниз. Если выше вашей записи будет находиться строка с методом аутентификации ident, сервер попытается сначала использовать его. Это означает, что требуется либо переместить вашу строку выше, либо полностью удалить или изменить записи, которые могут конфликтовать.

5. Настройка в pgAdmin

При подключении через pgAdmin оставьте поле имени хоста пустым, чтобы подключаться через локальный UNIX-сокет, если вы не хотите вносить изменения в pg_hba.conf. Если же необходимо использовать TCP/IP, убедитесь, что вы настроили соответствующую запись в pg_hba.conf.

6. Дополнительные рекомендации

Если после всех проверок проблема все еще сохраняется, вот несколько дополнительных шагов для устранения неполадок:

  • Проверьте, разрешает ли брандмауэр и другие сетевые настройки соединение с PostgreSQL.
  • Убедитесь, что pgAdmin имеет доступ к сети, если используется удаленный сервер (помимо локальной установки).
  • Проверьте разрешения на уровне операционной системы и настройки безопасности, которые могут препятствовать подключению (например, настройки конфиденциальности на Mac).

Заключение

Решение проблемы «pgsql может подключиться, pgAdmin не может» обычно связано с конфигурацией pg_hba.conf и методами подключения. Убедившись в правильности настройок и их порядке, вы сможете устранить данную проблему. Надеюсь, эти советы помогут вам в успешном подключении к PostgreSQL с использованием pgAdmin. Если возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...