toegang tot remote database
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
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
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
De boer op 09/08/2010 23:13:52:
Ja id stom van mij
Dan moet je het wel weghalen.
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
Gewijzigd op 09/08/2010 23:48:27 door Aad B
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
naast je bericht.
Je kan je bericht gemakkelijk aanpassen door op dit knopje te klikken 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
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
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
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';
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.
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