[PHP/MySQL] Can't connect to local mysql server (...)

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
*Edit: Lees even de update in dit topic :)

Hallo mensen :)

Ik snap hier echt niets meer van, dus ik richt mijn hoop nu maar even op GoT. Op het eerste gezicht lijkt dit echt een RTFM of gebruik de search vraag maar ik kom er echt niet uit.

Ik heb een MySQL database draaien op een server, laten we zeggen database.server1.nl. Deze database draait gewoon perfect en doet het ook gewoon. Er draait momenteel een site op met een CMS. Nu wou ik een andere site, die op een andere server staat, ook op deze database laten draaien. Dat is kennelijk makkelijker gezegd dan gedaan :X .

Ik blijf dus last houden van de volgende melding: "Can't connect to local mysql server through socket '/tmp/mysql.sock' (2)". Ik snap niet wat hier verkeerd gaat. Want ik wil toch helemaal niet naar een lokale database connecten :? :? Ik wil naar een externe database connecten dus die socket file, en het 'local mysql server' gedeelte in de foutmelding zouden niets met mijn externe database moeten hebben te maken toch?

Volgens MySQL Manual:
A Unix socket file connection is faster than TCP/IP, but can be used only when connecting to a server on the same computer. A Unix socket file is used if you don't specify a hostname or if you specify the special hostname localhost.
En in mijn code staat dus ook:
PHP:
1
mysql_connect("database.server1.nl","username","password");


Dus in principe zou ie gewoon naar een externe database moeten connecten over de default port (3306). Maar dat doet ie kennelijk niet. Ook niet als ik schrijf "database.server1.nl:3306" in bovenstaande code.

Is er een manier om aan te geven dat het hier om een externe database gaat :? Op server2 draait helemaal geen mysql, alleen PHP. Dus een mysql.sock file hoeft mijn code al helemaal niet te verwachten want die bestaat toch niet :z

Als ik phpinfo() draai op beide servers dan staat bij mysql gewoon alles op default. Dus de poorten zouden gewoon op 3306 moeten staan en ik zou in principe nergens een poortnaam hoeven te wijzigen in mijn mysql_connect oid. Via de search vind ik vooral gevallen van verkeerde rechten of php.ini files die niet goed zijn. Maar dat heeft er toch niets mee te maken ? Alles is toch goed :?

Zucht :'( Hoop dat jullie me kunnen helpen :)
Ben er al 2 dagen mee bezig :{

[ Voor 6% gewijzigd door Verwijderd op 05-10-2004 21:08 ]


Acties:
  • 0 Henk 'm!

Verwijderd

je moet op een paar dingen letten.
Zorg er in ieder geval voor dat skip-networking niet in de config staat van mysql. Dit is een beveiliging waardoor alleen localhost mag connecten.
Let er ook op dat de user waarmee je wil connecten wordt toegevoegd aan de user tabel van mysql vanaf die externe host.

Acties:
  • 0 Henk 'm!

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 19-09 22:02

krvabo

MATERIALISE!

Dat kan duiden op dat je user op server1 geen externe rechten heeft.
Dat moet je dus aan (laten) passen op server 1.
Nu staat er waarschijnlijk user@localhost, en dat moet zijn user@* ;)

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
krvabo schreef op 26 september 2004 @ 23:36:
Dat kan duiden op dat je user op server1 geen externe rechten heeft.
Dat moet je dus aan (laten) passen op server 1.
Nu staat er waarschijnlijk user@localhost, en dat moet zijn user@* ;)
Zou ik dan niet een melding krijgen met "Acces denied for user (...blablbla...)"? Of denkt php van: Ow, daar komt ik niet in, dan probeer ik het adres maar lokaal en geef ik een foutmelding omdat ik de mysql.sock niet kan vinden 8)7

Beetje vaag toch? Maar ik zal er wel even naar kijken zodra ik heb uitgevogeld hoe ik ook alweer via de shell kan inloggen naar mijn mysql server :{

Acties:
  • 0 Henk 'm!

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 19-09 22:02

krvabo

MATERIALISE!

Probeer je manual dan eens :)
# Someone has removed the Unix socket that mysqld uses (default `/tmp/mysqld.sock'). You might have a cron job that removes the MySQL socket (for example, a job that removes old files from the `/tmp' directory). You can always run mysqladmin version and check that the socket mysqladmin is trying to use really exists. The fix in this case is to change the cron job to not remove `mysqld.sock' or to place the socket somewhere else. See section A.4.5 How to Protect or Change the MySQL Socket File `/tmp/mysql.sock'.
# You have started the mysqld server with the --socket=/path/to/socket option. If you change the socket pathname for the server, you must also notify the MySQL clients about the new path. You can do this by providing the socket path as an argument to the client. See section A.4.5 How to Protect or Change the MySQL Socket File `/tmp/mysql.sock'.
/mysql/docs/manual.html
(ctrl-f Can't connect to local MySQL server)

[ Voor 5% gewijzigd door krvabo op 27-09-2004 07:19 ]

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
krvabo schreef op 27 september 2004 @ 07:18:
Probeer je manual dan eens :)

[...]

/mysql/docs/manual.html
(ctrl-f Can't connect to local MySQL server)
Ik heb bovenin de manual al gequote waarin staat dat een socket niets te doen heeft met een externe database. Bovendien draai ik sowieso niet mysql op de server die naar een externe database moet connecten, dus een mysql.sock hoeft ie ook niet te verwachten :)

Acties:
  • 0 Henk 'm!

  • MAZZA
  • Registratie: Januari 2000
  • Laatst online: 17-09 16:30

MAZZA

Barbie is er weer!

Staat de user waarmee je wilt connecten misschien restricted op localhost? Even in de mysql.user kijken op je server :)

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Ziet er allemaal heel configuratie-achtig uit. :) Vandaar een schopje richting Software Algemeen :)

>> Software Algemeen

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
MAZZA schreef op 27 september 2004 @ 09:14:
Staat de user waarmee je wilt connecten misschien restricted op localhost? Even in de mysql.user kijken op je server :)
even een kickje, ik ben er nog steeds niet uit.

Volgens mij heeft het echt helemaal niets te maken met de restricties van MySQL. Ik heb overigens niet de permissies om in de table mysql te komen, dus daar kan ik sowieso niet komen.

Heeft iemand enig idee of ik ergens instellingen zou kunnen wijzigen op server2 m.b.t lokale of externe server? Want volgens mij gaat het gewoon fout omdat server2 niet naar de db van server1 connect maar het lokaal probeert. Wat vervolgens niet lukt omdat er geen mysql.sock bestaat.

Als ik bijvoorbeeld een random wachtwoord invoer bij mysql_connect, krijg ik geen melding dat ik een fout wachtwoord heb. Ik blijf de melding houden van 'Can't connect to local .. bladiebla'

:? :? :? :'(

Acties:
  • 0 Henk 'm!

  • Thomasje
  • Registratie: Augustus 2002
  • Laatst online: 29-05-2024

Thomasje

Semacode

Ik gebruik cpanel voor het regelen van mijn website. Als ik bij het deel mySQl kijk dan kan je Acces Hosts toevoegen. Als je daar een host van een andere server bij zet moet hij het gewoon doen. En al het gene wat hier boven staat is allemala niet nodig.

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

wat staat er op de machine die de connectie initieert in de my.cnf? Werkt een pconnect toevallig wel? Heb je de URL van een phpinfo op de client voor ons? :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik had niet verwacht dat dit topic nog een reactie zou opleveren en heb in de tussentijd al contact opgenomen met de helpdesk van de host. Volgens hun is het op server1 niet toegestaan om connecties naar buiten te maken via poort 3306. PHP probeert het vervolgens lokaal omdat ie niet naar buiten kan connecten en zie daar een "Can't connect to local database" error is ontstaan.

Ik heb al gevraagd of ze bereid zijn om poort 3306 gewoon open te gooien voor connecties naar buiten, ik wacht nog op een antwoord. En als ze dat niet willen zal ik een andere manier moeten zoeken. Maar ik neem aan dat dat toch niet gaat lukken dus ga ik maar geen gebruik maken van een database. Dit betekent dus dat ik de werking van de sites moet aanpassen en het gastenboek op server1 niet meer zal werken (wel bekijken niet schrijven).

Even een toelichting:
Ik beheer dus de website(s) van een rijschool. Deze rijschool functioneert onder twee namen. Rijschool Alliantie en Rijschool Society. Hierbij is www.rijschoolsociety.nl server1 en www.rijschoolalliantie.nl server2 (met database). Ik had voor de website van Alliantie een CMS gemaakt en op Society staat nog zijn eigengemaakte HTML site. Nu wil ie daar graag precies dezelfde site als Alliantie met als enige verschil dat de naam Alliantie dan Society wordt. Uiteraard is het logischer om dan gewoon beide sites op 1 server te zetten maar daar ga ik niet over. Misschien dat ik hem dat wel ga aanraden, maar hij laat natuurlijk sowieso zijn pakket eerst aflopen voordat hij dat doet.

Uiteindelijk komt het erop neer dat ik Society dus op dezelfde database wil laten werken. Als er iets wordt verandert op Alliantie, dan gebeurd dat dus ook op Society. Logisch, komt namelijk uit dezelfde database. Maar ja, database lukt niet. Dus wat ik zelf dacht is om op het CMS van alliantie gewoon een pagina aan te maken met de naam update.php oid. Als de beheerder wat heeft aangepast kan ie daarop klikken en worden de aangepaste pagina's uitgelezen en vervolgens via een ftp connectie geupload naar society. Dit betekent dus dat de gewijzigde pagina's gesynchroniseerd worden zodra de beheerder op update.php klikt. Tegelijkertijd betekent dit dat de beheerder niet iets via society kan veranderen omdat deze geen database connectie heeft. (dit betekent ook dat er niet meer in het gastenboek getekend kan worden. Het gastenboek zelf zou ik daarentegen ook weer kunnen uitlezen en uploaden, dus bekijken kan nog wel geregeld worden). Maar dat zal ik dan maar als beperking moeten aannemen.

Hebben jullie misschien tips om dit beter aan te pakken? Ik denk dat bovenstaande wel een goede oplossing is zolang ik geen database connectie kan maken :). Ik hoop dat bovenstaand verhaal ook wel een beetje duidelijk is voor buitenstaanders ;).

Mocht het jullie nog wat uitmaken:
phpinfo() Society (server1) http://www.rijschoolsociety.nl/dev/beheer/info.php
phpinfo() Alliantie (degene met database) http://www.rijschoolalliantie.nl/beheer/info.php

Misschien is het beter als dit topic weer terug gaat naar P&W, ff een topicreport doen

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Synchronisatie tussen twee MySQL databases past toch ook het beste in SA? :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op server1 heb ik niet de mogelijkheid om een database aan te maken, vandaar dat ik het via php moet oplossen. Dus HTML output op Alliantie uitlezen, en uploaden naar society. Op Society staan dus eigenlijk alleen nog maar statische pagina's dan :)

Ik vroeg me alleen af of er misschien niet betere oplossingen waren (programmeertechnisch), vandaar dat ik hem liever in P&W heb :)

[ Voor 55% gewijzigd door Verwijderd op 05-10-2004 21:49 ]


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Wat jij wilt :)

SA > PW

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter

Acties:
  • 0 Henk 'm!

  • Thomasje
  • Registratie: Augustus 2002
  • Laatst online: 29-05-2024

Thomasje

Semacode

Zou je niet met een include kunnen werken. Dat je een complete pagina aanmaakt op je server met je localhost en die include je op een andere server. Zo maakt hij als het goed is gewoon gebruik van de localhost.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Thomasje schreef op 05 oktober 2004 @ 22:44:
Zou je niet met een include kunnen werken. Dat je een complete pagina aanmaakt op je server met je localhost en die include je op een andere server. Zo maakt hij als het goed is gewoon gebruik van de localhost.
Zou je dat kunnen toelichten?

Ik moet dus een pagina maken op server2 (server met database), daarin connect ik naar de database. Deze moet vervolgens als doorgeefluik functioneren voor server1 naar de database op server2 oid :? Ik zal er morgen even mee experimenteren. Het is nu al laat :)

Acties:
  • 0 Henk 'm!

  • Thomasje
  • Registratie: Augustus 2002
  • Laatst online: 29-05-2024

Thomasje

Semacode

Verwijderd schreef op 05 oktober 2004 @ 23:41:
[...]


Zou je dat kunnen toelichten?

Ik moet dus een pagina maken op server2 (server met database), daarin connect ik naar de database. Deze moet vervolgens als doorgeefluik functioneren voor server1 naar de database op server2 oid :? Ik zal er morgen even mee experimenteren. Het is nu al laat :)
Ik zal het even proberen uit te leggen.

Server 2 = Database server
Server 1= Server waar een gastenboek op moet met een database

Je zou een i-frame aan kunnen maken op server een waar hij een pagina laad van server 2

Nu dacht ik dat ik gebruik had gemaakt van de functie include maar ik heb een pop-up geopend met een webpagina van een externe server. Ik wete dus niet zeker of je met behulp van include een pagina kan laten werken.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het even getest, maar met een include werkt het iig niet. Als ik dat probeer dan zal ie uiteindelijk toch via server 1 connecten en krijg ik dus weer een socket error. Ik denk dat ik het maar gewoon oplos via een iframe dan.
Pagina: 1