Nieuwe db connectie
Via een lokale server wil ik een verbinding maken naar mijn server. Via C# is mij dit gelukt alleen via php krijg ik fouten die ik niet kan snappen.
Ik maak op de volgende manier mijn connectie:
Code (php)
1
2
3
4
5
2
3
4
5
$mysqli = new mysqli("website.com", "user", "password", "database");
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}
De gegevens kloppen en via C# maak ik met exact dezelfde gegevens ook een correcte verbinding.
De fout die ik via php krijg is als volgt:
Connect Error (1045) Access denied for user 'user'@'ip5253b3c5.direct-adsl.nl' (using password: YES)
Dit: ip5253b3c5.direct-adsl.nl heb ik niet ingevuld maar maakt hij er automatisch van. Als ik via watismijnip.nl kijk wat mijn hostname is blijkt dit deze identieke waarde te zijn.
Verander ik example.com in google.com, dan geeft hij daar wel google.com weer maar dan kan er natuurlijk geen verbinding worden gemaakt.
PS: example.com en gebruikersnaam en wachtwoord zijn maar voorbeelden ;)
Ik snap niet waar dit aan kan liggen. Iemand enig idee?
Alvast vriendelijk bedankt!
Heb je je eigen IP-adres al toegestaan als host in MySQL op je website.com?
Het probleem ligt ook niet aan de connectie denk ik. Op een of andere manier veranderd hij de host naar mijn hostname ipv de host die ik opgeef.
Dit gebeurt echter alleen met het ip of website van mijn server. Elke andere website of ip laat hij ongewijzigd
Gewijzigd op 27/02/2016 15:38:46 door Shamrock Modelbouw
Als het niet aan je grants van MySQL ligt (weet je héél zeker dat het hem hier niet in zit?) zit het probleem ergens anders.
Via de server laat ik alleen verbindingen vanuit mijn ip adres toe
Niemand een idee?
Quote:
Op een of andere manier veranderd hij de host naar mijn hostname ipv de host die ik opgeef.
Maak dan een verbinding op IP-basis, niet op host(name) basis. Zorg ook dat je grants op IP-basis geschieden.
Hoe maak je via je C# app een connectie? Via een host(name) of een IP? En mogelijk zet de implementatie van de databasedriver in C# een host(name) eerst om naar een IP? Dat zou dan mogelijk een reden kunnen zijn waarom het in je app wel goed gaat.
In het algemeen is het beter om via IPs te communiceren, dat scheelt je weer een lookup en daarnaast, als het resolven van host(name) naar IP op de desbetreffende server niet goed gaat of niet goed staat ingesteld kan dit voor fouten zorgen.
EDIT: ook ga ik er vanuit dat je begrijpt dat bij het maken van externe connecties deze door meerdere "poortjes" gaan: allereerst: accepteert het systeem externe connecties (en zoja, welke), en vervolgens: accepteert de database externe connecties (en zoja, welke). En mogelijk zijn er meerdere "checkpoints". Ook zou je kunnen kijken naar verschillen tussen de interne werking van de implementatie van MySQL functionaliteit in C# en die van PHP.
Gewijzigd op 12/03/2016 15:23:03 door Thomas van den Heuvel
Ik heb het via ip en domein geprobeerd. Het resultaat blijft hetzelfde.
Ik laat dit voor wat het is en maak het programma in C#. Hierbij is de connectie wederom gelukt.
Probleem is dus opgelost.
- zowel de database als de client driver moeten van MySQL zijn.
- versienummers van database en client driver moeten compatible zijn
Last but not least:
- wat doe je in C# dat verbinden wel lukt?
- hoe heb je in C# gevalideerd dat de hostname niet automatisch wordt ingevuld bij het opzetten van de verbinding? Voor hetzelfde geld is er een andere oorzaak...