Gå til innhold

Koble utenforstående applikasjon til server


Anbefalte innlegg

Hei,

 

Jeg prøver å koble meg til en MySQL-database som ligger på en Tomcat-server fra en annen PC enn serveren.

 

Jeg har skrevet en applikasjon som kjører vanlig JDBC connection.

Problemet er at jeg får Java ConnectException: connection refused.

 

Er det slik at man må åpne opp noen porter på serveren eller noe for at det skal være mulig for en applikasjon på en hvilken som helst annen PC å koble seg til databasen på serveren?

Lenke til kommentar
Videoannonse
Annonse
Normalt sett er det ikke tillatt for andre applikasjoner enn de som kjøres fra serveren selv som får tilgang til mysql databasen. i config-gilen til mysql kan man velge om alle IPer eller bare spesifikke IPer skal ha tilgang.

6103463[/snapback]

 

Gjelder dette også bruken MySQL Administrator? Må dette programmet også kjøres direkte fra serveren?

 

Jeg prøvde å kjøre fra en annen PC enn serveren, og fikk ikke koblet meg til. Gjelder det samme her?

Lenke til kommentar

Connection refused betyr vanligvis at maskin du forsøker å koble til ikke vil svare - sjekk brannmur.

 

MySQL har i tillegg en sjekk på hvilken maskin du kommer fra.

Hvis du har mulighet til å kjøre en sql på serveren lister dette ut alle brukenavn og host:

select host, user from user;

 

På min linux baserte server er følgende brukere installert som standard hvis serveren heter 'dexter'

host='dexter' user=''

host='dexter' user='root'

host='localhost' user=''

host='localhost' user='root'

 

Pass på at du har en bruker som matcher maskinnavnet/ip du kommer fra.

Lenke til kommentar
Connection refused betyr vanligvis at maskin du forsøker å koble til ikke vil svare - sjekk brannmur.

 

MySQL har i tillegg en sjekk på hvilken maskin du kommer fra.

Hvis du har mulighet til å kjøre en sql på serveren lister dette ut alle brukenavn og host:

select host, user from user;

 

På min linux baserte server er følgende brukere installert som standard hvis serveren heter 'dexter'

host='dexter' user=''

host='dexter' user='root'

host='localhost'  user=''

host='localhost' user='root'

 

Pass på at du har en bruker som matcher maskinnavnet/ip du kommer fra.

6131434[/snapback]

 

Ok,

 

Men hva om jeg vil kunne bruke en applikasjon på flere forskjellige PC'er uten å måtte gjøre IP-adresse-endringer hver gang, eller på en PC med varierende IP-adresse? Hvordan skal jeg da kunne koble meg til MySQL-databasen på en server?

Lenke til kommentar

JDBC (Databasetilkobling generellt) er veldig treig over nett. Du bør tenke på å legge en server (om du skriver selv ;)) på samme maskin som databasen, som leverer kun det du trenger av data. Selv med connection-pooling og spørringer som returnerer lite data er det treigt.

Endret av martiol
Lenke til kommentar
JDBC (Databasetilkobling generellt) er veldig treig over nett. Du bør tenke på å legge en server (om du skriver selv ;)) på samme maskin som databasen, som leverer kun det du trenger av data. Selv med connection-pooling og spørringer som returnerer lite data er det treigt.

6150315[/snapback]

 

Takk for svar.

 

Jeg merker at det går tregt. Bare det å skape tilkobling til databasen tar fort opptil flere sekunder.

 

Det jeg prøver å få til, er å lage en nettside som skal selge produkter. Denne skal hente vareinformasjon fra en database som ligger på en leid server (samme som domenet).

Og så skal jeg lage en applikasjon som skal kunne brukes til å legge inn nye varer, og håndtere bestillinger. Dette programmet skal altså kjøres fra en helt annen PC enn den hvor databasen og nettsiden ligger på. Så flaskehalsen blir som martiol sier selve databasetilkoblingen mellom programmet og databasen.

 

Så er det noen som vet hva f.eks. nettbutikker gjør dersom det skal ha en applikasjon som skal kunne brukes til å legge inn nye varer i deres varedatabase og nettbutikk, og behandler ordre o.l. og som kommuniserer raskt med databasen?

 

Er det en veldig vanlig løsning det du nevner, martiol?

Lenke til kommentar

Det er ikke veldig vanlig å kjøre applikasjon/webserver på samme maskin, ihvertfall ikke på litt større systemer. Det koster mye mer med en maskin med 4 cpu'r og 16gb ram enn to maskiner med 2 cpu'r og 8gb ram hver.

 

Måten man får løst det på er å kjøre 100/1000mbit nettverk mellom database og applikasjon/webserver.

 

Der jeg jobber kjører vi en webserver, en applikasjonsserver og en databaseserver på samme gigabit nettverk. Det er en ekstern avdeling som bruker vpn over en 4mbit linje og en 10mbit linje til internett for web-biten.

 

Jeg har egentlig ikke lagt merke til noe ytelsesforskjell på 100mbit og 1000mbit nettverk.

Lenke til kommentar
  • 3 måneder senere...
Connection refused betyr vanligvis at maskin du forsøker å koble til ikke vil svare - sjekk brannmur.

 

MySQL har i tillegg en sjekk på hvilken maskin du kommer fra.

Hvis du har mulighet til å kjøre en sql på serveren lister dette ut alle brukenavn og host:

select host, user from user;

 

På min linux baserte server er følgende brukere installert som standard hvis serveren heter 'dexter'

host='dexter' user=''

host='dexter' user='root'

host='localhost'  user=''

host='localhost' user='root'

 

Pass på at du har en bruker som matcher maskinnavnet/ip du kommer fra.

6131434[/snapback]

 

 

Hei igjen,

 

Man har jo filen /etc/mysql/my.cnf med MySQL-innstillinger, og i den kan man endre linja bind-address=127.0.0.1 til ens egen IP-adresse, slik at eksterne tilkoblinger fra denne IP'en godtas?

 

Er dette alt som må gjøres, eller må man også, som du skriver over, opprette en MySQL-bruker for denne nye IP-adressen?

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...