Postgresql localhost kapcsolódás hibás

 ( plt | 2019. május 16., csütörtök - 15:16 )

Debian szerveren szeretnék PHP-ból postgresql adatbázishoz kapcsolódni 'localhost'-ról.
127.0.0.1 és ::1 címekről tudok kapcsolódni, de localhost-ról nem.
A /etc/hosts fájlban van

127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback

A /etc/postgresql/9.6/main/postgresql.conf fájlban van

listen_addresses = 'localhost'

A /etc/postgresql/9.6/main/pg_hba.conf fájlban pedig van

host    all             all             127.0.0.1/32            md5

A leírások alapján ennyinek elégnek kellene lennie, hogy localhost alól is tudjak csatlakozni, de mégsem. Valamit kihagytam? Mi kellhet még?

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

localhost az a socket pl?

A pg_hba.conf fájlban a local sort kell keresned.
A localhost socketen próbál csatlakozni. Az pedig gondolom alapértelmezett állapotban nem md5 auth-method.

Köszönöm, valóban ezt találtam a pg_hba.conf fájlban:

# "local" is for Unix domain socket connections only
local   all             all                                     peer

De hiába módosítottam erre:

local   all             all                                     md5

sajnos így sem tudott a php localhost-on kapcsolódni.

config reload vagy restart volt a postgresen?

--
Gábriel Ákos

A "service postgresql restart" parancsot adtam ki utána.

ebben latod?

netstat -apnt | grep 5432

gondolom default porton listenel.
psql -el sikerul kapcsolodni hozzá?:

psql -h 127.0.0.1 -U usernev dbnev
psql -h localhost -U usernev dbnev

egyébként md5 oks, ha php-ból akarsz, de akkor nem unix-socket ha localhost, hanem hostname és port beallítás kell hozzá.

A netstat -apnt | grep 5432 parancs kimenete

tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      31598/postgres
tcp6       0      0 ::1:5432                :::*                    LISTEN      31598/postgres

A 127.0.0.1 és a localhost-on keresztül is hozzá tudok férni a psql paranccsal az adatbázishoz.

Köszönöm a válaszokat, kiderült, hogy a probléma nem a postgresql-ben, hanem a php-fpm chroot beállításában van. Chroot nélkül rendben elérhető a postgresql php alól is. Chroot alatt akkor sem, ha a /var/run/postgresql mappa be van mountolva. Hibaüzenetet semelyik logban nem találok.
Tudja valaki, mi kell még, hogy a postgresql tudja használni a socket kapcsolatokat is php-fpm chroot alatt?

miért kell neked feltétlenül a socket? én biztos h tcp-n csatlakoznék
ha mégis kell, akkor a chroot alá bemenve és az ottani passwd és group file-okkal megnézve a socketet van olvasás/írás joga a php-nak ?

--
Gábriel Ákos

Én csak annyit szeretnék, hogy az új környezetben a php kódok módosítás nélkül futhassanak.
Jelenleg 8.4-es postgresql elérhető a pg_connect paranccsal úgy, hogy "localhost" a host paraméter értéke.
Az új chroot környezetben ez a pg_connect már nem tud csatlakozni.
Bármilyen beállítással elégedett lennék, ha a pg_connect "localhost" hosttal képes lenne csatlakozni.
Mivel a postgresql pg_hba.conf fájlja alapból unix socket-re irányítja a "localhost" kapcsolatokat, ezért küzdök a socket elérésével. De ha be tudnám állítani a postgresqlnek, hogy az ilyen csatlakozásokat is TCP-vel kezelje, mint a 127.0.0.1 hosttal indítottakat, akkor azzal is elégedett lennék.

ha a psql -h localhost működik (username, jelszó legyen a postgresben - lásd createuser) akkor a pg_connect is kéne menjen localhosttal.
Az eltérés az, hogy a unix socketes connection az "peer", a tcp pedig md5 authentikációt használ.
--
Gábriel Ákos