Fórumok
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ások
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:
De hiába módosítottam erre:
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
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
Megszületett a megoldás, amit leírok, hátha valaki hasonló problémába ütközik. A postgresql a localhost kapcsolódáshoz olvassa a /etc/hosts fájlt, a mysql nem. Vagyis a chroot-ba elérhetővé kell tenni a /etc/hosts fájlt is amiben szerepelt a loclahost feloldása, ha postgresql "localhost" kapcsolódást is akarok chroot-olt php-fpm alól.