Toon posts:

[PostgreSQL] Hoe connectie maken via PHP?

Pagina: 1
Acties:
  • 100 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb sinds kort Linux op een oud bakkie geinstalleerd, omdat ik PSQL niet onder windows kon draaien alleen nu heb ik een probleempje met het connecten. Via de konsole lukt het me wel om database queries uit te voeren etc, maar connecten via PHP wil nog niet lukken.
code:
1
pg_connect("host=localhost port=5432 user=***** password=**** dbname=coen");

Dit geeft de volgende error:

Warning: Unable to connect to PostgreSQL server: could not connect to server: Invalid argument Is the server running on host 5432 and accepting TCP/IP connections on port 5432? in /var/www/html/index.php on line 3

Ik heb ook een MySQL database draaien die wel connect met dezelfde gegevens. Wat doe ik fout?

  • PowerSp00n
  • Registratie: Februari 2002
  • Laatst online: 16:33

PowerSp00n

There is no spoon

Ehm. Even voor de zekerheid: draait je PostgreSQL server wel? :+

[edit]
host 5432 and accepting TCP/IP connections on port 5432
:?

Verwijderd

Topicstarter
Hoe kom ik erachter of die draait? Ik heb wel '/etc/rc.d/init.d/postgresql start' gedaan en toen kreeg ik als antwoord: "Postmaster already running."

En dat host 5432 was een testje hij werkt ook niet wanneer ik localhost invoer.

Verwijderd

Topicstarter
Als ik nu helemaal geen host en port invoer dan krijg ik een error dat ik niet genoeg rechten heb :?.

pg_connect("user=postgres dbname=coen");
>>
Warning: Unable to connect to PostgreSQL server: FATAL 1: IDENT authentication failed for user "postgres" in /var/www/html/index.php on line 3

Ik vind dit nogal een vreemde error aangezien dat de user is met de alle rechten. Ook met root krijg ik dezelfde error, en wanneer ik helemaal geen user invoer dan neemt hij vanzelf de username apache die ook geen rechten heeft :'(.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Misschien dat je een oplossing kan vinden als je dit stuk erbij pakt:

PHP met PostgreSQL gebruiken [Webgoeroe.net]

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Op zondag 30 juni 2002 15:54 schreef int het volgende:
Hoe kom ik erachter of die draait? Ik heb wel '/etc/rc.d/init.d/postgresql start' gedaan en toen kreeg ik als antwoord: "Postmaster already running."
ps -u (de user waarmee je het hebt opgestart prob root)
dit toont alle draaiende processen en daar zou je postgresql process ook moeten tsn staan als ie draait.

Verwijderd

Topicstarter
Bij de root user staan een heleboel processen, maar niets waarvan ik denk dat het PSQL is. En onder de postgres username staat wel 3x (!) postmaster, maar ook dat lijkt mij niet de PSQL service.

Het lijkt er dus op dat PSQL toch niet draait terwijl dit wel wordt weergegeven bij het opstarten van Linux. Hoe kan ik PSQL nu opstarten dan?

.edit

Ik zie echter MySQL er ook niet tussen staan, maar die werkt wel.... :?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
maar ook dat lijkt mij niet de PSQL service
Postgres start je wel met postmaster en zo staat het ook in je processen lijstje. Kennelijk draait je server dus wel.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
Ik weet niet of ik dat als goed nieuws moet/kan zien, want nu heb ik weer geen idee waarom ik niet kan connecten...

  • HGM
  • Registratie: April 2000
  • Niet online

HGM

Misschien eens een IP ipv localhost proberen?
Kan je vanaf de shell wel connecten?

Verwijderd

Topicstarter
Connecten via IP geeft dezelfde error als met localhost.

Wanneer ik in de shell 'psql -U coen' probeer dan krijg ik deze error: psql: FATAL 1: IDENT authentication failed for user "coen"

En wanneer ik na -U een bestaande user invoer bijv postgres dan krijg ik deze error: psq: FATAL 1: Database "postgres" does not exist in the system catalog.

Maar een database selecteren (psql -d forum) werkt wel en dan kan ik ook database droppen en createn, maar niet tables maken en verwijderen...

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Tik es in:
pstree
of
ps xauf

dan zie je 1 postmaster met daaronder 1/2/3/4/etc postmastertjes.
Dan draait het dus gewoon.

Wat je altijd eerst moet proberen is of je username/password wel goed zijn.
Oftewel, test ze eens op de prompt met de cli 'psql'.
Als je bijv een $ in je password hebt wordt dat erg spannend ingevuld door php met die "" ;)
Wat ook goed kan is dat je postmaster niet draait met de goede settings (de -i kan dan missen) edit daarvoor /etc/rc.d/init.d/postgresql en zet er een -i bij, waar ook de -D /var/... staat.

Dit alles is te vinden in de php/postgres etc manuals :)

Btw, heb je uberhaupt wel een user coen aangemaakt in je database? (als postgres, createuser coen) en een database coen? (createdb coen als postgres)

Verwijderd

Topicstarter
Op zondag 30 juni 2002 21:13 schreef ACM het volgende:
Tik es in:
pstree
of
ps xauf

dan zie je 1 postmaster met daaronder 1/2/3/4/etc postmastertjes.
Dan draait het dus gewoon.
Ok die zie ik staan, 3 postmasters op een rij. Ik heb hier de output staan van die 2 commands. Het lijkt mij allemaal in orde iig.
Wat je altijd eerst moet proberen is of je username/password wel goed zijn.
Oftewel, test ze eens op de prompt met de cli 'psql'.
Als je bijv een $ in je password hebt wordt dat erg spannend ingevuld door php met die "" ;)
Ik heb het alleen nog maar geprobeert met de standaard user 'postgres'. Die zou DBA moeten zijn en zonder password. Dus deze zou moeten werken voor alles lijkt mij.

Ik heb zojuist wel een gebruiker aangemaakt. Alleen het 'granten' lukt nog niet. Deze commands werken niet:

- GRANT DBA TO coen;
- GRANT ALL ON forum TO coen; (de database coen heb ik al aangemaakt)
Wat ook goed kan is dat je postmaster niet draait met de goede settings (de -i kan dan missen) edit daarvoor /etc/rc.d/init.d/postgresql en zet er een -i bij, waar ook de -D /var/... staat.
Ik heb 2x '-d /var/....' staan in dat bestandje moet ik deze beide editen. Er staat overigens in het hele bestand niet 1x -i.
Dit alles is te vinden in de php/postgres etc manuals :)
Sorry :'( :P
Btw, heb je uberhaupt wel een user coen aangemaakt in je database? (als postgres, createuser coen) en een database coen? (createdb coen als postgres)
Ja nu wel. Alleen het 'granten' van coen lukt niet.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 30 juni 2002 22:39 schreef int het volgende:
Ok die zie ik staan, 3 postmasters op een rij. Ik heb hier de output staan van die 2 commands. Het lijkt mij allemaal in orde iig.
Zo hoort het idd :)
Ik heb het alleen nog maar geprobeert met de standaard user 'postgres'. Die zou DBA moeten zijn en zonder password. Dus deze zou moeten werken voor alles lijkt mij.
Sterker nog, die _is_ DBA tenzij je iets heel ergs verpest hebt :+
(of de naam tijdens het compileren gewijzigd ofzo)
Ik heb zojuist wel een gebruiker aangemaakt. Alleen het 'granten' lukt nog niet. Deze commands werken niet:
Default is alles public gegrant, dus je user moet er sowieso bij kunnen?
Die user heb je dus aangemaakt middels 'createuser coen' (of in de psql-tool: CREATE USER 'coen'; ) ?
- GRANT DBA TO coen;
- GRANT ALL ON forum TO coen; (de database coen heb ik al aangemaakt)
Dit is de mysql manier om een nieuwe user aan te maken (of probeer je dat niet? :) ), als je dus nog niet de user coen gemaakt had via create user, doe dat dan alsnog :)
DBA granten lijkt me allemaal wat overbodig, default werkt het allemaal prima als je hem in zijn eigen tabellen laat maken :)
Ik heb 2x '-d /var/....' staan in dat bestandje moet ik deze beide editen. Er staat overigens in het hele bestand niet 1x -i.
-d of -D ?
2x lijkt me wat overbodig, die -i is voor het starten met een netwerk-socket, maar connecties op localhost horen sowieso te werken.
Ja nu wel. Alleen het 'granten' van coen lukt niet.
Wat wil je hem precies granten? :)

Magoed, test eerst maar es:
psql -U coen coen

Verwijderd

Topicstarter
Op maandag 01 juli 2002 00:43 schreef ACM het volgende:
Zo hoort het idd :)

Sterker nog, die _is_ DBA tenzij je iets heel ergs verpest hebt :+
(of de naam tijdens het compileren gewijzigd ofzo)
Ik heb niets aan de 'postgres' user veranderd dus die zou idd nog gewoon DBA moeten zijn...
Default is alles public gegrant, dus je user moet er sowieso bij kunnen?
Die user heb je dus aangemaakt middels 'createuser coen' (of in de psql-tool: CREATE USER 'coen'; ) ?
Ik heb de user met dit command aangemaakt: psql -c CREATE USER coen;
Dit is de mysql manier om een nieuwe user aan te maken (of probeer je dat niet? :) ), als je dus nog niet de user coen gemaakt had via create user, doe dat dan alsnog :)
DBA granten lijkt me allemaal wat overbodig, default werkt het allemaal prima als je hem in zijn eigen tabellen laat maken :)
MySQL heb ik al geïnstalleerd, dat ging wel zonder problemen. Ik dacht alleen dat het bij PostgreSQL ook wel zou werken aangezien het beiden SQL databases zijn.
-d of -D ?
2x lijkt me wat overbodig, die -i is voor het starten met een netwerk-socket, maar connecties op localhost horen sowieso te werken.
2 Maal een kleine -d. Ik zit toch wel in de juiste file te wroeten? /etc/rc.d/init.d/postgresql
Wat wil je hem precies granten? :)

Magoed, test eerst maar es:
psql -U coen coen
psql: FATAL 1: IDENT authentication failed for user "coen"

Dit werkt (uiteraard) wel als ik het invul met postgres ipc coen.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op maandag 01 juli 2002 01:36 schreef int het volgende:
Ik heb niets aan de 'postgres' user veranderd dus die zou idd nog gewoon DBA moeten zijn...
Leek me al niet :)
Ik heb de user met dit command aangemaakt: psql -c CREATE USER coen;
Ik denk dat het beter is om dit in te tikken op de commandline, maar bovenstaande zou ook moeten werken:
'createuser coen'
2 Maal een kleine -d. Ik zit toch wel in de juiste file te wroeten? /etc/rc.d/init.d/postgresql
Yups, die 2e kan weg (of de eerste, wat je liever doet) echt kwaad kan het niet trouwens.
psql: FATAL 1: IDENT authentication failed for user "coen"

Dit werkt (uiteraard) wel als ik het invul met postgres ipc coen.
Dan is ie nog niet goed aangemaakt :?
OF je hebt in je systeem geen user coen en postgres probeert de informatie daarvan op te vragen, dat lijkt me echter vreemd.
[edit]
Even getest, daar ligt het niet aan.

Doe het volgende:
code:
1
2
3
4
su - postgres
createuser coen
(beantwoord de vragen naar believen)
psql -U coen template1

Als het goed is kom je er dan gewoon in.

Verwijderd

Topicstarter
Op maandag 01 juli 2002 01:52 schreef ACM het volgende:
Ik denk dat het beter is om dit in te tikken op de commandline, maar bovenstaande zou ook moeten werken:
'createuser coen'
Ik heb het nu via dat tooltje (createuser) geprobeerd, maar ik krijg dezelfde error als voorheen.
Yups, die 2e kan weg (of de eerste, wat je liever doet) echt kwaad kan het niet trouwens.
Ok nu is er nog maar 1 over :).
Dan is ie nog niet goed aangemaakt :?
OF je hebt in je systeem geen user coen en postgres probeert de informatie daarvan op te vragen, dat lijkt me echter vreemd.
Ik heb idd geen user 'coen'. Zou het echt helpen als ik deze eerst aanmaak? Ik kan natuurlijk ook proberen om dan een user 'root' aan te maken in postgres, maar ik weet (nog) niet of dat erg verstandig is :+.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op maandag 01 juli 2002 01:57 schreef int het volgende:
Ik heb idd geen user 'coen'. Zou het echt helpen als ik deze eerst aanmaak? Ik kan natuurlijk ook proberen om dan een user 'root' aan te maken in postgres, maar ik weet (nog) niet of dat erg verstandig is :+.
Zie edit is dus niet nodig, postgres accepteert niets van root :)

Verwijderd

Topicstarter
Helaas, ook nu geeft hij weer dezelfde foutmelding ;(.

Maar we zijn nu wel druk bezig om een user aan te maken, maar is dat wel noodzakelijk om postgres vanuit php te kunnen benaderen?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op maandag 01 juli 2002 02:06 schreef int het volgende:
Helaas, ook nu geeft hij weer dezelfde foutmelding ;(.

Maar we zijn nu wel druk bezig om een user aan te maken, maar is dat wel noodzakelijk om postgres vanuit php te kunnen benaderen?
Ik heb het even getest en is niet perse noodzakelijk, tenzij jullie wijzigingen in de pg_hba.conf hebben gemaakt (in /var/lib/pgsql/data oid staat die) en daar ident verplicht hebben gesteld voor een user.

Verwijderd

Topicstarter
De enige regel in pg_hba.cong waar geen # voor staat is deze:
code:
1
local all ident sameuser

Misshien kan ik een proberen om alleen 'local' en 'all' te laten staan. Mijn gevoel zegt echter dat het hier niet aan ligt.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Het mijne zegt dat het daar wel aan ligt ;)

Normaal staat er bij de localhost 'trust' (of password etc), maar met 'ident sameuser' verplicht je dat user X ook als postgres user X in moet loggen.
Dus systeemuser coen, mag als postgres user coen werken etc.

Verwijderd

Topicstarter
Ok even voor de duidelijkheid.

Dit zijn de laatste paar regels van dat bestand:
code:
1
2
3
4
5
6
# TYPE | DATABASE | IP_ADDRESS | MASK | AUTH_TYPE | AUTH_ARGUMENT

#local all trust
#host all 127.0.0.1 255.255.255.255 trust

local all ident sameuser

Ik zelf denk dat ik er dit van moet maken:
code:
1
2
3
4
5
6
# TYPE | DATABASE | IP_ADDRESS | MASK | AUTH_TYPE | AUTH_ARGUMENT

#local all trust
#host all 127.0.0.1 255.255.255.255 trust

local all

Ik zeg het toch goed wanneer ik zeg dat alle regelsdie beginnen met een # nergens voor zijn? Commentaar dus?

Verwijderd

Topicstarter
JAAAAAAAAA!!!! :) :) :)


Thx so much ACM! *D
Pagina: 1