Gå til innhold

[Løst] PHP ekstern kobling mot mySQL database


Anbefalte innlegg

Hallo,

 

Jeg har satt opp en mySQL server på privat serveren min som jeg nå skal prøve å koble

til via PHP på webhotellet mitt, så jeg må ha en ekstern tilkobling.

Har fått satt opp mySQL serveren med remote access etter tutorials o.l.

som jeg har funnet på nettet, så i teorien skal den funke. jeg har satt

bind-address = 192.168.10.103, i config fila(linux server) og gitt brukeren 'brukernavn'

tilgang til serveren.

 

Så har jeg laget en database med kjøringene

CREATE TABLE contacts (id int(6) NOT NULL auto_increment,first varchar(15) NOT NULL,last varchar(15) NOT NULL,phone varchar(20) NOT NULL,mobile varchar(20) NOT NULL,fax varchar(20) NOT NULL,email varchar(30) NOT NULL,web varchar(30) NOT NULL,PRIMARY KEY (id),UNIQUE id (id),KEY id_2 (id))";

INSERT INTO contacts VALUES ('','John','Smith','01234 567890','00112 334455','01234 567891','[email protected]','http://www.gowansnet.com')

 

Dette har oppdrettet en tabell contacts for testing.

 

Når jeg legger ut

<?
$username="brukernavn";
$password="passord";
$database="database";

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die(mysql_error());

$query="SELECT * FROM contacts";
$result=mysql_query($query);
$num=mysql_numrows($result);

mysql_close();

echo "<b><center>Database Output</center></b><br><br>";

$i=0;
while ($i < $num) {

$first=mysql_result($result,$i,"first");
$last=mysql_result($result,$i,"last");
$phone=mysql_result($result,$i,"phone");
$mobile=mysql_result($result,$i,"mobile");
$fax=mysql_result($result,$i,"fax");
$email=mysql_result($result,$i,"email");
$web=mysql_result($result,$i,"web");

echo "<b>$first $last</b><br>Phone: $phone<br>Mobile: $mobile<br>Fax: $fax<br>E-mail: $email<br>Web: $web<br><hr><br>";

$i++;
}

?>

i en index.php på serveren så kobler den opp som den skal og kjører ut informasjonen, men dette er da lokalt.

 

Så når jeg prøver ekstern tilkobling med

<?
$username="brukernavn";
$password="passord";
$database="database";

mysql_connect('-IP-',$username,$password);
@mysql_select_db($database) or die(mysql_error());

$query="SELECT * FROM contacts";
$result=mysql_query($query);
$num=mysql_numrows($result);

mysql_close();

echo "<b><center>Database Output</center></b><br><br>";

$i=0;
while ($i < $num) {

$first=mysql_result($result,$i,"first");
$last=mysql_result($result,$i,"last");
$phone=mysql_result($result,$i,"phone");
$mobile=mysql_result($result,$i,"mobile");
$fax=mysql_result($result,$i,"fax");
$email=mysql_result($result,$i,"email");
$web=mysql_result($result,$i,"web");

echo "<b>$first $last</b><br>Phone: $phone<br>Mobile: $mobile<br>Fax: $fax<br>E-mail: $email<br>Web: $web<br><hr><br>";

$i++;
}

?>

 

Så får jeg bare utskriften;

 

Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on '-IP-' (4) in /home/,,,/public_html/phpoutput.php on line 6
Access denied for user 'nobody'@'localhost' (using password: NO)

 

Og det er dette som er problemet, hvorfor vil den ikke koble til som den skal via remote access?

Når jeg prøver å kjøre linux kommando;

mysql -u brukernavn –h IP –p

 

så får jeg tilgang og alt funker som det skal.

 

Håper noen kan slenge litt lys på hva jeg gjør feil/hva som må til for at det skal funke.

Endret av Marensius
Lenke til kommentar
Videoannonse
Annonse

Hallo,

 

Jada jeg har åpnet 3306 porten :)

Er det jeg syns er så rart, for jeg kan koble til lokalt

og jeg kan koble til eksternt i terminal med "mysql" kommandoer.

Det er ingenting problemer da, problemet er når jeg skal koble til via

en php fil. for det nekter.

 

Jeg har også database for wc3ft cs servere som kjører brukerdatabasen

sin hos meg. Det er det heller ingen problemer med. Serverene

kobler opp uten problem og legger inn informasjon som de skal og henter ut informasjon. Alt funker med cs + mysql.

Lenke til kommentar

<?php
//Kobler til databasen
if (!$link = mysql_connect('IP', 'brukernavn', 'passord')) {
die(mysql_error());
}
if (!mysql_select_db('database')) {
die("Kunne ikke bruke databasen 'databasenavn'");
}

// Gjør noe med databasen her.
?>

 

Prøver ut denne kode så får jeg;

Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'IP' (4) in /home/.../public_html/phpkobling.php on line 3

Can't connect to MySQL server on 'IP' (4)

 

Prøvde med brukenavn@hostname uten at det funket.

 

Har nå også prøvd fra flere andre servere å kontakte mySQL via terminal å det funker helt fint.

 

Men det funker ikke via php

Endret av Marensius
Lenke til kommentar

det *må* jo være noe galt med credentials-variablene eller ip-variabelen i php, siden du f.eks. får en feilmelding om at brukeren 'nobody' ikke får tilgang, når du faktisk prøver å koble deg opp som 'brukernavn'?

 

kan ikke php, så jeg ser ikke sånn umiddelbart akkurat feilen, men det ser jo ikke ut som 'brukernavn' kommer fram til mysql ihvertfall siden den avviser 'nobody'.

 

og når du skriver "IP" i eksemplene, så mener du den 192.168.... adressa som du postet i et av de første innleggene, ikkesant?

Lenke til kommentar
Noe galt er det et sted hehe,

 

På mySQL serveren bruker jeg lokal ip 192.168..

Mens når jeg skriver IP så mener jeg ekstern IP 79....

som er den jeg må bruke for å kontakte serveren "utenfra"

 

79.x.y.z er en router da, ok.

 

det er noe annet rart her også, på det ene forsøket får du jo tilbake en feilmelding som sier at mysql ikke vil slippe inn 'nobody', mens du etterpå ikke får connecta i det heletatt. jeg gjetter noe sånt som at du har prøvd med feil ip og riktig brukernavn, feil brukernavn og riktig ip, men ennå ikke fått kombinert riktig brukernavn OG riktig ip, eller noe sånt ... så da er det nok i boks snart :-)

Endret av quantum
Lenke til kommentar

Har du prøvd å sette portnummer bak ip-adressen? Kan jo kanskje hende det hjelper her...

72...:3306 (eller annen port om du ikke kjører på det som skal stå som default...)

 

Vet ikke om det løser ditt problem, men kan være verdt et forsøk i alle fall...

 

Jeg har selv hatt litt problemer med enkelte rutere med port vidresendingen. Alt skal være satt opp riktig, men at den ikke fungerer som den skal. De ruterne jeg har slitt mest med det på er Jensen WebLink serien...

Lenke til kommentar

Yep har prøvd det også :)

 

Ser ut som nå at jeg har fått skrevet selve php scriptet riktig og

at den bare ikke vil connecte til mysql serveren.

 

Men synes dette er rart da cs serverene klarer å koble til eksternt

OG jeg klarer å koble til eksternt via terminal.

Lokalt funker php scriptet(med å bytte ut ip ofc)

 

Det er kun php eksternt til mysql som ikke funker.

Og feilmeldingen jeg får (på 2 webhotell) er at den ikke kan connecte

til selve IP adressen/domene(prøvd begge)

 

Porten 3306 er åpen og er den jeg bruker til mySQL.

Lenke til kommentar

ja jeg har tenkt på det samme, derfor fant jeg et gratis webhotell for å prøve derfra også. Men der for jeg også at den ikke klarer å koble til.

 

Det står at de har støtte for PHP og MYSQL, men dette betyr vel kanskje

ikke at de godtar det eksternt?

Lenke til kommentar

Nå trenger ikke dette å være tilfelle her, men eg ville vært skeptisk til enhver webhost som ikke filtrere trafikk inn/ut. Og det kan jo være slik at de sperrer trafikk ut, og at de ikke har fått forespørsler om å kunne bruke eksterne MySQL hosts før.

Lenke til kommentar
Det er kun php eksternt til mysql som ikke funker.

Og feilmeldingen jeg får (på 2 webhotell) er at den ikke kan connecte

til selve IP adressen/domene(prøvd begge)

 

Du må jo ha fått til kommunikasjonen minst én gang, ellers hadde du ikke fått feilmelding tilbake fra MySQL om at det var user 'nobody'@'localhost' som ble nektet adgang?

 

De gangene når du får "connection denied" eller "cannot connect to ... " el. så har du ikke vært i kontakt, men når du får tilbake hvilket brukernavn som ble nektet tilgang, så må du vel faktisk ha snakka med mysql?? trur eg vaffal ...

Lenke til kommentar

Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on '-IP-' (4) in /home/,,,/public_html/phpoutput.php on line 6

Access denied for user 'nobody'@'localhost' (using password: NO)

 

Først prøver den IPen, og når det ikke funker, faller den tilbake på localhost.

Så det er noe gale med kommunikasjonen.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...