toegang tot remote database
Hoi Allen,
Ik heb het volgende probleem(-pje):
Als ik met een browser het bestand spelers.php (zie onder) benader, kan ik zonder problemen de database en tabellen benaderen.
Als ik spelers.php op de website bij mijn webhost zet, waarbij ik de host vervang door het ip adres van mijn server (thuis) werkt het niet (cannot display webpage)
De priveleges op de database zijn: user(xxx) host(%)
De poorten 80 en 3306 staan open.
Het is vast een bekend probleem. Oplossingen/suggesties zijn zeer welkom !
(spelers.php)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>Test namen</title>
</head>
<body>
<form action="catch name1.php" method="post">
Maak keuzen: <br>
<input value="verzenden" type="submit"></form>
</body></html>
Ik heb het volgende probleem(-pje):
Als ik met een browser het bestand spelers.php (zie onder) benader, kan ik zonder problemen de database en tabellen benaderen.
Als ik spelers.php op de website bij mijn webhost zet, waarbij ik de host vervang door het ip adres van mijn server (thuis) werkt het niet (cannot display webpage)
De priveleges op de database zijn: user(xxx) host(%)
De poorten 80 en 3306 staan open.
Het is vast een bekend probleem. Oplossingen/suggesties zijn zeer welkom !
(spelers.php)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>Test namen</title>
</head>
<body>
<form action="catch name1.php" method="post">
Maak keuzen: <br>
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
error_reporting (E_ALL | E_STRICT);
// Database connection
$db_database = 'Scores';
$db_host = 'Y';
$db_user = 'Z';
$db_pass = 'X';
mysql_connect($db_host,$db_user,$db_pass) or die("Could not connect to MySQL (Main connection)");
?>
error_reporting (E_ALL | E_STRICT);
// Database connection
$db_database = 'Scores';
$db_host = 'Y';
$db_user = 'Z';
$db_pass = 'X';
mysql_connect($db_host,$db_user,$db_pass) or die("Could not connect to MySQL (Main connection)");
?>
<input value="verzenden" type="submit"></form>
</body></html>
Gewijzigd op 10/08/2010 11:25:16 door De boer
Ik zou je password hier eerst effe weghalen.
Je hoster kan bepalen dat externe mysql verbindingen niet mogen.
Verder moet je wat aan je datamodel doen. Is niet echt correct.
Je hoster kan bepalen dat externe mysql verbindingen niet mogen.
Verder moet je wat aan je datamodel doen. Is niet echt correct.
Ja id stom van mij
Het kan dat de hoster port 3306 net toelaat naar buiten alhoewel hosters zich meer bezig houden met poorten naar binnen (firewall). Het probleem ligt eerder bij De Boer zelf: Heeft hij in zijn modem/router port 3306 geforward naar binnen en accepteert zijn eigen firewall (windows??) een inkomende port 3306 en heeft De Boer zijn eigen MYSQL database geautoriseerd voor inkomend verkeer vanaf de hoster ? Er komt nogal wat bij kijken maar hte is niet onmogelijk. Je kan zelfs je hoster altijd passeren over poort 80 (http poort) of beter nog 443(https poort) en je maakt dan bijvoorbeeld vanuit je php script een MySQL connectie over 443 en die forward je imkomend op je router naar 3306 naar je interne MySQL.
Edit:
verder kan je hier ook beter niet je prive ipnummer publiceren. Iedere jojo kan nu op poort 80 en 3306 klooien...
en user root, ook heeeel fout.
verder kan je hier ook beter niet je prive ipnummer publiceren. Iedere jojo kan nu op poort 80 en 3306 klooien...
en user root, ook heeeel fout.
Gewijzigd op 09/08/2010 23:41:40 door Aad B
Het is mogelijk. Heb verbinding gehad via navicat met z'n database. Daarom weet ik van verkeerd datamodel.
Dan moet je het wel weghalen.
De boer op 09/08/2010 23:13:52:
Ja id stom van mij
Dan moet je het wel weghalen.
Hoi Aad,
De database op mijn server thuis benaderbaar via port 3306 die wordt geforward naar mijn LAMP server, dat is getest dus daar zit het niet in.
(later ga ik een ssl verbinding configureren.)
Ik kan dus vanuit iedere locatie de database benaderen, dat doe ik via sockets vanuit een delphi applicatie die draait op een touchscreen computer
De database op mijn server thuis benaderbaar via port 3306 die wordt geforward naar mijn LAMP server, dat is getest dus daar zit het niet in.
(later ga ik een ssl verbinding configureren.)
Ik kan dus vanuit iedere locatie de database benaderen, dat doe ik via sockets vanuit een delphi applicatie die draait op een touchscreen computer
Okee, dan heb je intern de zaken goed geregeld. Wellicht houdt je provider dan het verkeer tegen. Advies is dan om over port 443 te werken wat overigens niet betekent dat je ssl werkt, je misbruikt alleen de poort. Ik heb alleen nog niet uitgezocht of je een request/connectie naar MySQL een port mee kan geven als parameter. Met Oracle kan ik dat wel. Beetje laat nu maar dat is wellicht wat je uit kan zoeken voor MySQL. Suc6.
Gewijzigd op 09/08/2010 23:48:27 door Aad B
Ik denk niet dat de hoster poort 3306 blokkeert.
Als je met MySQL verbinding maakt controleert ie:
- Mag je van jouw locatie inloggen (IP adres)
- Mag de gebruiker inloggen met opgegeven wachtwoord?
- Heeft de gebruiker toegang tot een database, met de rechten voor de query?
Waarschijnlijk heb je iets als [email protected] of root@localhost.
Dat betekent dat je niet van buitenaf kan verbinden.
Stel het IP adres van jouw host is 12.34.56.78. Dan moet je [email protected] rechten geven.
Je zou dat in PMA kunnen instellen.
Ik zou nu wel even jouw root wachtwoord wijzigen, als iemand nu toegang krijgt tot de DB / PMA kunnen ze doen wat ze willen.
Als je met MySQL verbinding maakt controleert ie:
- Mag je van jouw locatie inloggen (IP adres)
- Mag de gebruiker inloggen met opgegeven wachtwoord?
- Heeft de gebruiker toegang tot een database, met de rechten voor de query?
Waarschijnlijk heb je iets als [email protected] of root@localhost.
Dat betekent dat je niet van buitenaf kan verbinden.
Stel het IP adres van jouw host is 12.34.56.78. Dan moet je [email protected] rechten geven.
Je zou dat in PMA kunnen instellen.
Ik zou nu wel even jouw root wachtwoord wijzigen, als iemand nu toegang krijgt tot de DB / PMA kunnen ze doen wat ze willen.
.. je kan je bericht wijzigen om wachtwoord te veranderen in sterretjes oid
Je kan je bericht gemakkelijk aanpassen door op dit knopje te klikken
naast je bericht.
Gewijzigd op 10/08/2010 11:24:07 door - Raoul -
je moet je ip niet neer zetten maar localhost:3306 dan zal het denk ik wel werken ik heb het zelf ook gehad dusja
Zeer bedankt ! Ik zocht al naar de mogelijkheid het bericht aan te passen. Olliedom van mij :)
De permissies voor de database zijn voor user Y zijn:
host % dus toegang vanaf iedere host
permissies voor: insert, delete, update (alhoewel ik in mijn script alleen nog probeer verbinding te krijgen)
Het vreemde blijft dus dat ik vanaf iedere locatie met gebruik van mijn applicatie (delphi met sockets) gewoon de database van buiten af kan benaderen, zodat ik veronderstel dat de database van buitenaf wel benaderbaar zou moeten zijn.
Lastig probleem, temeer omdat ik ook het vermoeden heb dat het in de permissies zit
De permissies voor de database zijn voor user Y zijn:
host % dus toegang vanaf iedere host
permissies voor: insert, delete, update (alhoewel ik in mijn script alleen nog probeer verbinding te krijgen)
Het vreemde blijft dus dat ik vanaf iedere locatie met gebruik van mijn applicatie (delphi met sockets) gewoon de database van buiten af kan benaderen, zodat ik veronderstel dat de database van buitenaf wel benaderbaar zou moeten zijn.
Lastig probleem, temeer omdat ik ook het vermoeden heb dat het in de permissies zit
Peter aka Lekensteyn op 10/08/2010 10:53:37:
Heren lezen we deze topic wel ? Wie controleert ?? en waarom de localhost oplossing (nick van der heijden) ?? De topic starter wil zijn website bij een "hoster" gegevens op laten halen uit een REMOTE database (zijn eigen databees thuis, op zijn eigen ip) en daar controleert de hoster dus niks en je kan zeer zeker geen root@localhost gebruiken. Het gaat er slechts om of de hoster poort 3306 naar buiten doorlaat en of er een alternatieve oplossing is (communiceren over een andere poort).Ik denk niet dat de hoster poort 3306 blokkeert.
Als je met MySQL verbinding maakt controleert ie: <<<<<<<<<<<
Als je met MySQL verbinding maakt controleert ie: <<<<<<<<<<<
Gewijzigd op 10/08/2010 11:33:02 door John D
oooh sorry dan heb ik het verkeert gelezen
De probleem definitie is precies zoals John D het beschrijft
Stel dat je hoster 3306 niet doorlaat in zijn firewall: Ik zou dan proberen om over poort 443 naar jouw MySQL database te gaan. Je kan de gebruikte poort meegeven in de connect string:
$server can also include a port number. e.g. "hostname:port"
In je eigen router forward je dan 443 naar 3306 naar je MySQL server.
Appeltje eitje! 443 is altijd open en vanwege het karakter (ssl) lekker vrij....en je kan gerust je hostname gebruiken, hoeft niet perse ip te zijn. Gebruik dan wel de host-name van je adsl verbinding (check www.watismijnip.nl). Ik gebruik dat voor diverse activiteiten (http, ssh, ftp)
Code (php)
1
mysql_connect ([ string $server = ini_get("mysql.default_host") [, string $username = ini_get("mysql.default_user") [, string $password = ini_get("mysql.default_password") [, bool $new_link = false [, int $client_flags = 0 ]]]]] )
$server can also include a port number. e.g. "hostname:port"
In je eigen router forward je dan 443 naar 3306 naar je MySQL server.
Appeltje eitje! 443 is altijd open en vanwege het karakter (ssl) lekker vrij....en je kan gerust je hostname gebruiken, hoeft niet perse ip te zijn. Gebruik dan wel de host-name van je adsl verbinding (check www.watismijnip.nl). Ik gebruik dat voor diverse activiteiten (http, ssh, ftp)
Gewijzigd op 10/08/2010 12:59:04 door John D
Na alle waardevolle tips hier, kwam ik tot de conclusie dat id waarschijnlijk port 3306 geblokkeerd is, en ja hoor, bij navraag bij mijn webprovider werd dat bevestigd.
Overigens een uiting van de waardering voor de leden en de site phphulp !
Ik vind het fantastisch dat er op zo'n positieve manier altijd hulp wordt geboden
De oplossing van John lijkt me de moeite waard, dat ga ik uitproberen.
Op m'n LAMP server uitzoeken hoe die forward moet worden ingesteld.
Het wordt dan:
// Database connection
$db_database = 'Scores';
$db_host = 'Y:443';
Overigens een uiting van de waardering voor de leden en de site phphulp !
Ik vind het fantastisch dat er op zo'n positieve manier altijd hulp wordt geboden
De oplossing van John lijkt me de moeite waard, dat ga ik uitproberen.
Op m'n LAMP server uitzoeken hoe die forward moet worden ingesteld.
Het wordt dan:
// Database connection
$db_database = 'Scores';
$db_host = 'Y:443';
Om te zien of je via jouw host verbinding kan maken met een externe database kun je fsockopen gebruiken om te zien of je verbinding kunt krijgen.
Een goede host ondersteund externe MySQL verbindingen, wie is jouw host?
Jij zegt dat je wel verbinding kunt krijgen met een touchscreen pc, maar die staat zeker in het netwerk?
Het gebruik van 443/80 is een lelijke oplossing, dat doet Skype bijvoorbeeld.
Een goede host ondersteund externe MySQL verbindingen, wie is jouw host?
Jij zegt dat je wel verbinding kunt krijgen met een touchscreen pc, maar die staat zeker in het netwerk?
Het gebruik van 443/80 is een lelijke oplossing, dat doet Skype bijvoorbeeld.
Ehhh de verbinding vanaf m'n touchscreen gaat rechtstreeks naar mijn LAMP server thuis, dat loop niet via de provider dus, en dat werkt.
Mijn provider is one.com
Behalve overstappen (duur, rompslomp) zou ik geen betere oplossing weten dan die van John
Mijn provider is one.com
Behalve overstappen (duur, rompslomp) zou ik geen betere oplossing weten dan die van John
Link.
De boer op 10/08/2010 14:04:22:
De oplossing van John lijkt me de moeite waard, dat ga ik uitproberen.
Op m'n LAMP server uitzoeken hoe die forward moet worden ingesteld.
Het wordt dan:
// Database connection
$db_database = 'Scores';
$db_host = 'Y:443';
Op m'n LAMP server uitzoeken hoe die forward moet worden ingesteld.
Het wordt dan:
// Database connection
$db_database = 'Scores';
$db_host = 'Y:443';
Goed initiatief, gewoon vragen aan hoster. Verder: een forward stel je niet in op je LAMP server maar op je adsl modem/router. Die moet een inkomende verbinding op 443 forwarden via poort 3306 naar het ipnummer van je LAMP server waar MySQL draait.
en Y wordt dan jouw adsl hostnaam, bijvoorbeeld ip5659be49.speed.planet.nl en dat is dan je router die de call weer forward zoals ingesteld naar je MySQL
Edit:
maar afgezien dat ik dit een leuke vraag vind vraag ik mij af: Bij one.com krijg je toch ook gewoon een MySQL database erbij ? Daar gooi je toch al je gegevens even in? Nu moet je je peeceetje thuis 7x24 laten draaien en dat kost €60,- per jaar.
maar afgezien dat ik dit een leuke vraag vind vraag ik mij af: Bij one.com krijg je toch ook gewoon een MySQL database erbij ? Daar gooi je toch al je gegevens even in? Nu moet je je peeceetje thuis 7x24 laten draaien en dat kost €60,- per jaar.
Gewijzigd op 10/08/2010 15:32:14 door John D




