Řešení 1:
To znamená, že Postgres se pokouší ověřit uživatele pomocí protokolu Ident a nemůže. Ident auth funguje takto:
- Máte databázovou roli 'foo' v databázi 'db'
- Váš
pg_hba.conf
soubor (v/etc/postgres-something/main
) definuje 'Ident' jako protokol pro připojení k databázidb
pro uživatele připojující se z určitých hostitelů - Unixové uživatelské jméno, které se připojuje, je 'foo'
- Ident server spuštěný na počítači, ze kterého se uživatel připojuje, potvrzuje, že jeho uživatelské jméno je skutečně „foo“
Možné příčiny a řešení:
- Neexistuje žádný Ident server běžící na počítači, ze kterého se pokoušíte připojit. Otestujte to tak, že se k němu pokusíte připojit na portu 113. Pokud se to nezdaří, nainstalujte Ident server (např.
sudo apt-get install oidentd
). -
Je zde Ident server, ale není zde žádná databázová role odpovídající jménu, se kterým se pokoušíte spojit (ve výše uvedeném příkladu „foo“). Vytvořte jej tak, že se nějakým způsobem připojíte k databázi s právy superuživatele a proveďte
CREATE ROLE foo
. Případně přidejte položku do/etc/postgresql/.../main/pg_ident.conf
(nebo/var/lib/pgsql/12/data
nebo kdekoli). -
Možná, že uživatelské jméno shellu neodpovídá databázová role. Můžete to otestovat tak, že se připojíte k serveru Ident během připojení a předáte správná čísla portů.
-
Možná se skutečně chcete připojit pomocí hesla , ne Ident. Upravte
pg_hba.conf
soubor vhodně. Například změnit:host all all 127.0.0.1/32 ident
do
host all all 127.0.0.1/32 md5
Řešení 2:
Nejste si jisti příčinami, ale toto mi to vyřešilo:
v pg_hba.conf
změnit na toto:
hostit všechny všechny 127.0.0.1/32 md5
Přesná chyba:Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"
Řešení 3:
Na CentOS přidejte následující řádek do /var/lib/pgsql/9.3/data/pg_hba.conf
:
host all all 127.0.0.1/32 trust
A okomentujte ostatní příspěvky.
Toto nastavení samozřejmě není bezpečné, ale pokud se jen plácáte na vývojovém VM jako já, pak je to pravděpodobně v pořádku...