Nieuwe db connectie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Shamrock Modelbouw

Shamrock Modelbouw

27/02/2016 14:50:41
Quote Anchor link
Goede middag,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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);
}


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!
 
PHP hulp

PHP hulp

16/11/2024 02:17:14
 
- Ariën  -
Beheerder

- Ariën -

27/02/2016 15:04:39
Quote Anchor link
Heb je je eigen IP-adres al toegestaan als host in MySQL op je website.com?
 
Shamrock Modelbouw

Shamrock Modelbouw

27/02/2016 15:07:20
Quote Anchor link
Ja die is toegestaan, en vanuit de C# app maak ik ook een correcte connectie
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
 
Thomas van den Heuvel

Thomas van den Heuvel

27/02/2016 16:09:59
Quote Anchor link
Staat de poort welke via je communiceert (default 3306?) wel open naar de buitenwereld? Ik weet niet welk beleid jouw host voert maar "standaard dicht" lijkt mij beter dan "standaard open" in deze.

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.
 
Shamrock Modelbouw

Shamrock Modelbouw

27/02/2016 16:20:25
Quote Anchor link
Aangezien ik via de C# app vanuit dezelfde pc verbinding kan maken lijkt me dit goed?
Via de server laat ik alleen verbindingen vanuit mijn ip adres toe
 
Shamrock Modelbouw

Shamrock Modelbouw

12/03/2016 09:09:07
Quote Anchor link
Niemand een idee?
 
Thomas van den Heuvel

Thomas van den Heuvel

12/03/2016 15:19:51
Quote Anchor link
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
 
Shamrock Modelbouw

Shamrock Modelbouw

12/03/2016 16:53:35
Quote Anchor link
Bedankt voor het meedenken!
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.
 

14/03/2016 13:55:27
Quote Anchor link
Je zou in de details moeten treden. In PHP maak je gebruik van de MySQLi-extentie, dat is in essentie de MySQL client driver. Die kan alleen verbinding maken met een MySQL-database.
- 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...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.