Нам нужна только 1 роль, владеющая 1 базой данных, домен-сокет unix, без пароля
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:
Это ошибка.
Error connecting to the server: 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
.
Была такая же проблема с 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 по умолчанию, и я не мог заставить его работать. Не знаю почему, но это в другой день.
Вы должны проверить всю свою pg_hba.conf
файл, порядок директив важен. Думаю, вы сохранили в нем строку по умолчанию:
local all all ident
Если эта строка присутствует перед вашей конкретной строкой о jppstphp
, сервер postgresql сначала попытается идентифицировать вас по вашему имени пользователя UNIX, которое, похоже, envol
. Это не удастся, потому что вы пытаетесь подключиться как пользователь / роль postgres jppstphp
.
Если мое предположение верно, удалив указанную выше строку (и, возможно, аналогичную запись с md5
аутентификация по паролю) или разместив свой jppstphp
строка, прежде чем она должна позволить вам подключиться через локальный сокет.
Чтобы подключиться через локальный сокет, оставьте поле хоста пустым, как и вы, - это все, что требуется.