postgreSQL 7.4.1 + php4 + linux[konfiguracja]
marcink19 - 25-02-2006 16:40
postgreSQL 7.4.1 + php4 + linux[konfiguracja]
Witam!!
Piszę bo mam poważny problem! po napisaniu skryptu
Kod:
<?
$conn = pg_connect("host=127.0.0.1 dbname=template1 user=postgres password=szeryf");
echo "$conn";
?>
wyskakuje mi cały czas komunikat :
Cytat:
Warning: pg_connect(): Unable to connect to PostgreSQL server: could not connect to server: Connection refused Is the server running on host "127.0.0.1" and accepting TCP/IP connections on port 5432? in /home/marcin/public_html/pgconnect.php on line 2
o co w tym chodzi!
Druga sprawa polega na ogólnym skonfigurowaniu postgreSQL'q pod php4 i apacha czy ktos mi moze pomoc??
pozdrawiam :o :confused:
Druciak - 25-02-2006 23:54
A takie głupie pytanie.... pgsql działa ?
Nasłuchuje na IP 127.0.0.1 ?
Może
lsof -i 4 podpowie co się dzieje i czy serwer słucha na IP na takim porcie.
marcink19 - 26-02-2006 19:11
???
Możesz mi powiedzieć gdzie powinienem wpisac te lsof -i 4!! jako root czy jako zwykly użytkownik? Wiem ż esię tak pytam ale to są moje początki na postgreSQl'u i php!
pozdrawiam :p
Joe - 27-02-2006 02:52
Jak sądzę rozwiązanie Twoich problemów kryje się w hba.conf. Musisz odpowiednio poustawiać opcje dostępu.
marcink19 - 27-02-2006 11:28
Wiem że najprawdopodobniej mam źle skonfigurowany plik pg_hba.conf tylko ż e ja nie wiem co tam powinienem zmieć ponieważ ja dopiero zaczynam zabawę z postgreSQL'em!!
Możesz mi pomóc!!???
ta sparwa jest bardzo pilna!!
pozdrawiam!
Joe - 27-02-2006 13:20
Zgaduję, że skrypt nie może się połączyć, ponieważ w pg_hba.conf dla użytkownika postgres jest domyślnie następująca regułka:
Kod:
local all postgres ident sameuser
Co oznacza, że użytkownik zostanie zaakceptowany, jeśli nazwa systemowego użytkownika jest zgodna z nazwą użytkownika postgres. Wszystko to masz elegancko opisane w dokumentacji PostgreSQL.
Żeby skrypt działał musisz (wersja skrócona, wyjaśnienia we wspomnianej dokumentacji):
1. Stworzyć sobie użytkownika w bazie, z poziomu którego będziesz się łączył z bazą. Nazwijmy go "heniek". Jako root wklep:
Kod:
su postgres
createuser heniek
Zostaniesz spytany o uoprawnienia dla tego użytkownika, postępuj wedle własnych preferencji.
2. Bazę template1 lepiej zostawić w spokoju i do pracy stworzyć sobie inną:
Kod:
createdb -O heniek bazahenka
3. W pg_hba.conf zezwól na łączenie się z bazą użytkownikom na tej samej maszynie z autoryzacją md5:
Kod:
local all all md5
Domyślnie w pg_hba.conf jest bodajże taki wpis:
Kod:
local all all ident sameuser
Jeśli w Twojej konfiguracji także to zakomentuj go.
3. Z poziomu php z bazą łączysz się w następujący sposób:
Kod:
$conn = pg_connect("dbname=bazahenka user=heniek password=haslohenka");
Zaś z shella:
Kod:
pgsql -U heniek -d bazahenka
Powinno zadziałać.
marcink19 - 27-02-2006 14:42
Niestety nie pomogło wyskoczył komunikat:
Cytat:
Warning: pg_connect(): Unable to connect to PostgreSQL server: FATAL: IDENT authentication failed for user "marcin" in /home/marcin/public_html/pgconnect.php on line 2
a mój skrypt ma postać:
Kod:
<?
$conn = pg_connect("dbname=marcinbaza user=marcin password=******");
echo "$conn";
?>
, a moja ostatnia linia w pg_hba.conf ma postać:
Kod:
local all all ident sameuser
!
nie wiem co jest grane! :confused:
Joe - 27-02-2006 15:58
Nie trzymałeś się mojego przepisu. ;-) Tę linię w pg_hba.conf:
Kod:
local all all ident sameuser
miałeś zakomentować albo usunąć, a zamiast niej wpisać:
Kod:
local all all md5
Linia, którą masz usunąć oznacza, że użytkownik systemowy łączący się z bazą musi być identyczny z użytkownikiem PostgreSQL. Ponieważ skrypt PHP działa jako użytkownik "www-data", zaś łączysz się jako użytkownik "marcin" otrzymujesz błąd.
marcink19 - 27-02-2006 21:11
niestety to nic nie pomogło nadal wyświetla komunikta:
Cytat:
Warning: pg_connect(): Unable to connect to PostgreSQL server: FATAL: IDENT authentication failed for user "marcin" in /home/marcin/public_html/pgconnect.php on line 2
Joe - 27-02-2006 21:43
Hm... a co masz jeszcze w pg_hba.conf? Czy z konsoli (przez psql) możesz się połączyć? W każdym razie jeżeli baza ma być dostępna jedynie dla lokalnych użytkowników to w pg_hba.conf wystarczą tylko te dwie linie:
Kod:
local all postgres ident sameuser
local all all md5
zanotowane.pldoc.pisz.plpdf.pisz.plkonstruktor.keep.pl