Permalänk
Medlem

C# Med MySQL

Hej igen

Har problem med C# som skall ansluta till en mysql webbserver. Det fungerar till localhost men inte till min webbserver.

Webbserver hos cliche förövrigt.

MySqlConnection mysqlConnect = new MySqlConnection(); mysqlConnect.ConnectionString = "Server=xxx;database=xxx;uid=xxx;password=xxx"; mysqlConnect.Open();

Får felet:

Citat:

Unable to connect to any of the specified MySQL hosts.

Visa signatur

Intel 3570k @ 4,4GHz | ASUS P8Z77-V | G.Skill 8GB 1600Mhz | Gigabyte GTX970 | Samsung 850 Evo 250gb | Corsair HX650 | Antec P280

Permalänk
Medlem

Är det konfigurerat så att man kan nå MySQL servern på annat sätt än local?

Permalänk
Medlem

Vilket då? Vet inte riktigt vad som skall konfigureras och så, började me detta för några timmar sen.

Visa signatur

Intel 3570k @ 4,4GHz | ASUS P8Z77-V | G.Skill 8GB 1600Mhz | Gigabyte GTX970 | Samsung 850 Evo 250gb | Corsair HX650 | Antec P280

Permalänk

Testar du koden lokalt så är det nog troligt att du inte kan köra mot deras databas.

Testa/utveckla mot din egen databas och sen kopierar du över allt till de och ändrar så att du kör mot deras databas.

Visa signatur

Nikon D90, Nikon D7000, SB-600, 2xYN-460, Nikkor 18-105mm/3.5-5.6 VR, Nikkor 35mm/1.8, Nikkor 50mm/1.8D, Tamron 70-200/2.8, Tokina 11-16/2.8, Nikon 85/3.5 Macro
Flickr

Permalänk
Medlem

Det är ju det jag gör? Koden fungerar när jag ansluter till localhost, men inte till servern (jag ändrar localhost och allt det såklart)

Visa signatur

Intel 3570k @ 4,4GHz | ASUS P8Z77-V | G.Skill 8GB 1600Mhz | Gigabyte GTX970 | Samsung 850 Evo 250gb | Corsair HX650 | Antec P280

Permalänk

Svårt att säga vad som är fel då du inte kan ge ut lösenord och så. Du kanske kan ge lite mer info?:S

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Medlem

Hmm, vet inte riktigt vad jag kan säga mer.. Men läste på google att det kunde ha med portar att göra, för jag vet ju att alla inloggningsuppgifter till servern är rätta så det måste ju vara något sånt? En sa att man skulle skriva i koden

Sever=host: port; (Utan mellanrum mellan : och p)

ifall man fick det felet jag har, men vet någon hur man kan få fram vilken port ens mysql använder?

Visa signatur

Intel 3570k @ 4,4GHz | ASUS P8Z77-V | G.Skill 8GB 1600Mhz | Gigabyte GTX970 | Samsung 850 Evo 250gb | Corsair HX650 | Antec P280

Permalänk

det är väl något som din leverantör får ge dig? Kan nog variera.

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Medlem

Har du försökt att kopiera databasen från din lokala dator till servern följt av att kopiera applikationen från din lokala dator till servern (sql-host sätts till localhost) och provat applikationen?

Det är inte så många som erbjuder någon att ansluta till sql-server från externa adresser. Jag tror kort o gott att cliche har blockerat de portar sql-servern lyssnar på.

Visa signatur

weeeee

Permalänk
Medlem

Nä, det med porten fungerade inte Nu vet jag inte vad jag skall göra faktiskt.

På cliches hemsida står det att man bara kan ansluta via phpMyAdmin, tror ni den spärrar då på något sätt?

EDIT: Jag måste ju köra programmet från min dator så hur menar du att jag skall ladda upp den?

Ifall det inte går.. Hur är bästa sättet att kommunicera med MySQL databasen då?

Innan skickade jag request:s till php filer som sedan skickade tillbaka datan som man då visade i applikationen. Är det de bästa sättet?

Visa signatur

Intel 3570k @ 4,4GHz | ASUS P8Z77-V | G.Skill 8GB 1600Mhz | Gigabyte GTX970 | Samsung 850 Evo 250gb | Corsair HX650 | Antec P280

Permalänk

Du får utveckla mot din databas på din dator och sen ändra i koden så att den är kopplad mot deras och ladda upp!

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Medlem

Men den kan inte ansluta till deras databas, det är det som är problemet.

EDIT: Jag tror det är så att jag är blockerad från att göra på detta sättet. Får använda php och webrequest för att få min data då.

Tack för svaren

/Håkan

Visa signatur

Intel 3570k @ 4,4GHz | ASUS P8Z77-V | G.Skill 8GB 1600Mhz | Gigabyte GTX970 | Samsung 850 Evo 250gb | Corsair HX650 | Antec P280

Permalänk
Medlem

Varför behöver du ha mysql-databasen på servern?

Visa signatur

weeeee

Permalänk
Citat:

Ursprungligen inskrivet av mounte
Varför behöver du ha mysql-databasen på servern?

Var ska han annars ha den?

Visa signatur

Nikon D90, Nikon D7000, SB-600, 2xYN-460, Nikkor 18-105mm/3.5-5.6 VR, Nikkor 35mm/1.8, Nikkor 50mm/1.8D, Tamron 70-200/2.8, Tokina 11-16/2.8, Nikon 85/3.5 Macro
Flickr

Permalänk
Medlem

det jag undrar är:
vad ska applikationen göra som kräver att applikationen och databsen ligger på olika datorer.

Visa signatur

weeeee

Permalänk
Medlem

I nästan alla fall där jag jobbar med databaser så ligger dessa på separata burkar. vad är det för konstigt med det "mounte" ?

På grund av last brukar man skilja på dessa....

Visa signatur

Har varit på detta forum på tok för länge...

Permalänk
Medlem

Det är inget konstigt i det. Eftersom en användare har ett problem så försöker jag komma med alternativa lösningar om inte hans partners kan öppna sql-portar utåt.

Visa signatur

weeeee

Permalänk
Medlem

Jag behöver dom på olika servrar eftersom man med ett "admin" program skickar upp information i databasen. Sen loggar en användare in i ett klient program och hämtar hem datan i databasen och visar den i programmet.

Visa signatur

Intel 3570k @ 4,4GHz | ASUS P8Z77-V | G.Skill 8GB 1600Mhz | Gigabyte GTX970 | Samsung 850 Evo 250gb | Corsair HX650 | Antec P280

Permalänk
Medlem

då får du se till att skriva php-script som sköter all datamangling och göra anrop till det scriptet från klient/srever-programmen.
Du bör dock fundera på vad illvilliga användare kan tänkas göra.

Visa signatur

weeeee

Permalänk
Medlem

Jo, medveten om att jag måste hålla det säkert. Men vad finns det för olika saker man kan göra för att minska sql injections o allt vad det heter?

Använt mysql_real_escape_string men hur säkert är det igentligen?

Visa signatur

Intel 3570k @ 4,4GHz | ASUS P8Z77-V | G.Skill 8GB 1600Mhz | Gigabyte GTX970 | Samsung 850 Evo 250gb | Corsair HX650 | Antec P280

Permalänk
Medlem

Vad jag vet så säkrar mysql_real_escape_string data som går in i mysql från injektioner.
Dock skyddar den inte mot andra saker som <iframe src="random-porrsida.xx"> eller bara <div style="width: 392829834983247px; height: 81974891px; background-color: purple /> eller liknande saker som du inte vill ha.

Jag brukar köra:
mysql_real_escape_string(htmlspecialchars($data));

Visa signatur

Cat funeral! Cat funeral!
>>> 112383 <<<

Permalänk
Medlem

PHP har ju numera inbyggt stöd för prepared statements, genom PDO. Då finns det ingen anledning till att använda **_escape_string_**_blaah() - prepared statements förebygger mot sql-injektioner automagiskt.

Med PHP och en snygg .htaccess-lösning kan du bygga REST-webservices som du kopplar upp mot för att hämta data, och protokollet kan vara i alla möjliga format som json, soap eller pure-xml. Det är en snygg lösning, då de flesta webbhotell blockerar extern åtkomst till databasservern.

Permalänk
Medlem

på webhotellet som jag använder är det olika användare och lösenord för localhost eller fjärr. Sen måste man skriva in att tillåta anslutning från en specifik ip adress om det ska vara externt. Jag har inte testat det själv men det borde fungera för C-program också

Permalänk
Medlem

Tänk på att när man installerar MySQL server så måste man kryssa i en checkbox (som jag inte minns texten vid) för att tillåta andra anslutningar än localhost.

Permalänk

Men servern ligger ju inte lokalt så han kan inte påverka installationen? Den ligger ju som sagt hos webhotellet och det är där problemet ligger

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Medlem

Jo precis, ja kan ju ansluta till localhost om ja inte skrivit de?, men det är inte problemet. Nu har jag löst detta med PHP och C# WebRequest så man kan hämta data och göra allt som jag ville.

Dock en liten jobbig grej:

För att kunna lägga in datan i databasen från C# programmet måste jag (?) skriva in t.ex:

"http://www.domänen.com/information.php?USER=Hgerner&PASS=swec..."

för att php-sidan skall veta vad den skall lägga in. Är detta en bra lösning eller skall jag satsa på att göra det på något annat sätt.

Anyway, Nu kanske ni tänker, "ah, orkar han inte lägga det?, det är ju bara några rader" eller något :P, men jag har ca 40-50 olika fält där man skall kunna skriva ungefär 1000 bokstäver i vissa av dom (ifall man vill) :), så finns det någon begränsning av hur mycket man kan skriva in där eller är det bara att börja kopiera o klistra in?

Visa signatur

Intel 3570k @ 4,4GHz | ASUS P8Z77-V | G.Skill 8GB 1600Mhz | Gigabyte GTX970 | Samsung 850 Evo 250gb | Corsair HX650 | Antec P280