Potkal jsem to se 4 rolemi, které jsem vytvořil:
Po změně hesla pro uživatele v pgAdmin III pomocí GUI (1) se tento uživatel již nemůže přihlásit.
pgAdmin III zobrazí chybovou zprávu:
An error has occurred:
Error connecting to the server: FATAL: password authentication failed for user "sam"
FATAL: password authentication failed for user "sam"
Můj systém: Postgresql 9.2 na Ubuntu 12.04
Existuje nějaký způsob, jak to opravit?
(1): přihlaste se s účtem postgres, klikněte pravým tlačítkem myši na přihlašovací role, přejděte na kartu „Definice“ a zadejte heslo
Je možné, že vás tato chyba PgAdmin chyba ( changelog ):
2012-11-28 AV 1.16.1 Ovládací prvky pro výběr data vrací ve výchozím nastavení úplné časové razítko, které může způsobit neúmyslné změny data u úloh a dat platnosti rolí. Ignorujte časovou část.
Bylo zjištěno, že tato chyba nastavila data vypršení platnosti hesla daleko v minulosti, například 1/1/1970. V tomto případě se chybová zpráva při pokusu o připojení neliší od nesprávného hesla.
Tato data vypršení platnosti můžete zkontrolovat pomocí:
SELECT usename,valuntil FROM pg_user;
a pokud se mýlí, resetujte je pomocí:
ALTER USER username VALID UNTIL 'infinity';
a upgradovat pgAdmin.
Jednoduchá věc je přihlásit se pomocí psql nebo pgAdmin a
ALTER USER sam WITH PASSWORD 'new_password';
Pokud se nyní nemůžete přihlásit pomocí účtu superuživatele, můžete obnovit změnou nastavení pg_hba.conf pro tohoto uživatele a znovu načíst konfiguraci (někdy zjistím, že to vyžaduje restart serveru, ale nejsem si jistý proč).
Můžete přidat řádek, který vám umožní přihlásit se pomocí metody ident (peer in 9.2) (pokud můžete použít místní systémový účet se stejným jménem jako uživatel) pro místní připojení uživatele, nebo (pokud to není možné) nastaveno na „trust“ (velmi dočasně!). Pokud používáte důvěru, vraťte se co nejdříve zpět, protože to znamená „důvěru v to, že uživatel je tím, komu tvrdí“! a proto je toto nastavení nebezpečné ponechat aktivované mimo potřeby okamžité obnovy.
Po přihlášení se můžete výše uvedené heslo resetovat.
Pro variantu Windows - tuto nepříjemnou chybu jsem také zažil kvůli pgAdmin pro moji instalaci systému Windows x64 verze 9.2. To nechalo moji produkci ochromenou.
Ve složce C:\Program Files\PostgreSQL\9.2\data
Nebo C:\Program Files (x86)\PostgreSQL\9.**x**\data
najdete textový soubor pg_hba.conf.
Vyhledejte následující řádky:
# TYPE DATABASE USER ADDRESS METHOD
# IPv4 local connections:
Host all all 127.0.0.1/32 md5
# IPv6 local connections:
Host all all ::1/128 md5
a změňte METHOD md5 na „trust“ takto:
# TYPE DATABASE USER ADDRESS METHOD
# IPv4 local connections:
Host all all 127.0.0.1/32 trust
# IPv6 local connections:
Host all all ::1/128 trust
Z Windows>Run
Napište "services.msc" a [enter] najděte správnou instanci PostgreSQL a restartujte ji.
Vaše zabezpečení DB je nyní otevřeno! Dbejte na varování, abyste jej vrátili zpět na md5 po změně doby vypršení platnosti hesla uživatele na rok 2099 pro všechny relevantní uživatele.
Právě jsem měl stejný problém a ukázalo se, že mám více uživatelů se stejným jménem (různé případy). Jakmile jsem sloučil vlastnictví a odstranil jeden, bylo to alespoň jasné. V závislosti na způsobu připojení nebyl případ nutně přenesen pro ověření.
Pokud jste to ještě nezkusili, zkontrolujte svůj soubor pg_hba.conf. Bude se jmenovat něco jako /var/lib/pgsql/9.3/data/pg_hba.conf (Fedora 20); možná budete muset použít 'find/-name pg_hba.conf' k nalezení.
Ve spodní části souboru změňte hodnoty „METHOD“ na „trust“ pro místní testování (úplné informace viz dokumenty postgres). Restartujte počítač a ujistěte se, že je vše spuštěno čisté a že jsou načteny nové parametry.
AKTUALIZACE 2016-10-14:
Na Ubuntu je požadovaný název souboru /etc/postgresql/9.5/main/pg_hba.conf
. Pouze pro místní testování , upravte jej tak, aby vypadal takto:
...
#
# Database administrative login by Unix domain socket
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
# local all all peer
local all all trust
# IPv4 local connections:
# Host all all 127.0.0.1/32 md5
Host all all 127.0.0.1/32 trust
Dva řádky s METHOD "trust" jsou nové. Umožňují připojení bez uživatelského jména/hesla.
Po dokončení budete muset restartovat server pomocí:
Sudo systemctl restart postgresql