Ansluta min MySQL databas från en annan dator?

Permalänk

Ansluta min MySQL databas från en annan dator?

Hej!

Jag har gjort ett program i Java där jag kan ansluta min MySQL server igenom att ange användarnamn, ipadress och lösenord.
Just nu är ipadressen satt till 127.0.0.1, men det är datorns egna IP adress.

Lokala nätverkat har en 10.x.x.x IP adress på min dator och den dator jag vill ansluta ifrån har en 192.168.x.x adress. Alltså måste jag gå ut på nätverket och tillbaka.

Att ändra IP och användarnamn i MySQL är enkelt.

RENAME USER user@ipaddress1 TO user@ipaddress2;

Men problemet är att jag kan inte alls ansluta min MySQL från en godtycklig dator. Hur ska jag göra? Måste jag ha mer program? Apache?

Permalänk
Medlem

Datorerna ligger ju i olika subnät.
Hur ser din nätverksstruktur ut?

Permalänk
Skrivet av Undie:

Datorerna ligger ju i olika subnät.
Hur ser din nätverksstruktur ut?

Jag har för mig att alla datorer är ihopkopplad till en router, eller om det är olika routers. Men jag har en teori att jag sätter min användare till användarnamn@subnätIP på min server.

Där efter så ska jag försöka ansluta min internetIP adress via någon annan dator. Just nu fungerar inte det.

Permalänk
Medlem
Skrivet av heretic16:

Jag har för mig att alla datorer är ihopkopplad till en router, eller om det är olika routers. Men jag har en teori att jag sätter min användare till användarnamn@subnätIP på min server.

Där efter så ska jag försöka ansluta min internetIP adress via någon annan dator. Just nu fungerar inte det.

Kan du öht pinga det ip du vill ansluta mot?

Nu var det länge sen jag körde MySQL, men kan du ansluta till servern med nått gui-tool, t ex nått av dessa? (första träffen på google):
https://www.eversql.com/top-5-mysql-gui-tools-for-windows/

Permalänk
Medlem

Ett par saker behöver fungera för att detta ska vara genomförbart:

- Du behöver ha en route mellan subnäten.
- Det får inte finnas nån brandvägg längs vägen eller på mysqlservern som blockerar inkommande anslutningar (tcp port 3306)
- MySQL måste tillåta externa anslutningar. Default gör den inte det har jag för mig. I Linux ändrar du i /etc/my.cnf eller motsvarande fil. I Windows vet jag inte.

Ett enkelt sätt att testa är att använda telnet på rätt port, vilket för MySQL är 3306 om du inte ändrat det på servern. Kör CMD och testa:

C:/>telnet 10.10.10.10 3306
Trying 10.10.10.10...
Connected to 10.10.10.10.
Escape character is '^]'.

Får du upp ovanstående innebär det att du kan ansluta till MySQL.

Visa signatur

ecce
#NATisNotASecurityFeature

Permalänk
Skrivet av BasseBaba:

Kan du öht pinga det ip du vill ansluta mot?

Nu var det länge sen jag körde MySQL, men kan du ansluta till servern med nått gui-tool, t ex nått av dessa? (första träffen på google):
https://www.eversql.com/top-5-mysql-gui-tools-for-windows/

Jag ändrade så nu har båda datorerna samma subnätverk och jag kan pinga mellan från server -> client, men inte från client -> server.

Permalänk
Skrivet av ecce:

Ett par saker behöver fungera för att detta ska vara genomförbart:

- Du behöver ha en route mellan subnäten.
- Det får inte finnas nån brandvägg längs vägen eller på mysqlservern som blockerar inkommande anslutningar (tcp port 3306)
- MySQL måste tillåta externa anslutningar. Default gör den inte det har jag för mig. I Linux ändrar du i /etc/my.cnf eller motsvarande fil. I Windows vet jag inte.

Ett enkelt sätt att testa är att använda telnet på rätt port, vilket för MySQL är 3306 om du inte ändrat det på servern. Kör CMD och testa:

C:/>telnet 10.10.10.10 3306
Trying 10.10.10.10...
Connected to 10.10.10.10.
Escape character is '^]'.

Får du upp ovanstående innebär det att du kan ansluta till MySQL.

När jag pingar från server -> client så fungerar det, men när jag pingar från client -> server så fungerar det inte. Dem är på samma subnät.

Permalänk
Medlem

Som ovan, steg ett är att se till att du kan kommunicera mellan maskinerna först. Vad kör du för operativsystem på datorn som har MySQL servern installerad? MySQL lyssnar som default på localhost (127.0.0.1) vilket betyder att ingen annan förutom den lokala maskinen kan ansluta. Det du behöver göra är att kommentera ut raden i konfigurationen som säger att det är localhost som lyssnas på eller helt enkelt växla den till din andra adress på maskinen som är nåbar utifrån.

Jag har aldrig kört MySQL under Windows (om det nu är det du kör) men här verkar du hitta konfigurationsfilen där den raden finns:
https://stackoverflow.com/questions/14779104/how-to-allow-rem...

Starta om tjänsten. Du kan sedan använda programmet netstat i cmd för att verifiera att MySQL faktiskt lyssnar på någonting annat än localhost. netstat -ano | find "3306" borde ge dig en output som är korrekt.

Permalänk
Medlem
Skrivet av heretic16:

När jag pingar från server -> client så fungerar det, men när jag pingar från client -> server så fungerar det inte. Dem är på samma subnät.

Det behöver inte vara så illa, det ser ändå rätt ok ut.
Ofta är brandväggar i servermaskiner confade till att droppa ping.

Funkar det att ansluta mot MySQL:en nu då?
Skulle som sagt verkligen rekommendera att du börjar att ansluta med ett etablerat verktyg så att du plockar bort din egen kod som felkälla vid felsökningen...

Bra tips från @jagardaniel också, jag bara utgick från att servern var korrekt uppsatt

Permalänk
Skrivet av jagardaniel:

Som ovan, steg ett är att se till att du kan kommunicera mellan maskinerna först. Vad kör du för operativsystem på datorn som har MySQL servern installerad? MySQL lyssnar som default på localhost (127.0.0.1) vilket betyder att ingen annan förutom den lokala maskinen kan ansluta. Det du behöver göra är att kommentera ut raden i konfigurationen som säger att det är localhost som lyssnas på eller helt enkelt växla den till din andra adress på maskinen som är nåbar utifrån.

Jag har aldrig kört MySQL under Windows (om det nu är det du kör) men här verkar du hitta konfigurationsfilen där den raden finns:
https://stackoverflow.com/questions/14779104/how-to-allow-rem...

Starta om tjänsten. Du kan sedan använda programmet netstat i cmd för att verifiera att MySQL faktiskt lyssnar på någonting annat än localhost. netstat -ano | find "3306" borde ge dig en output som är korrekt.

Klient Windows 10.
Server Windows 7.

Jag har skapat en användare som jag har gett fulla rättigheter till. Dessutom när man skapar en användare i MySQL så får den inga rättigheter, men externa enheter kan ansluta till användaren. Däremot har root fulla rättigheter(no shit!) men ingen kan ansluta den från andra nätverk. Vilket är normalt.

Så jag kör på min nya icke-admin användare.

Din SQL kod gav felmeddelande.

Permalänk
Skrivet av BasseBaba:

Det behöver inte vara så illa, det ser ändå rätt ok ut.
Ofta är brandväggar i servermaskiner confade till att droppa ping.

Funkar det att ansluta mot MySQL:en nu då?
Skulle som sagt verkligen rekommendera att du börjar att ansluta med ett etablerat verktyg så att du plockar bort din egen kod som felkälla vid felsökningen...

Bra tips från @jagardaniel också, jag bara utgick från att servern var korrekt uppsatt

Det fungerar inte att ansluta från min klient då mitt program ger ett felmeddelande att "Cannot connect to this MySQL server: null, not allowed for 'host'@'10.x.x.x.' to connect this MySQL server".

I detta fall är 10.x.x.x. klientens egna IP adress.

Permalänk
Medlem

Du kan använda verktyget MySQL Workbench istället, det är relativt enkelt och gratis.
Vad gäller din server, vad för server kör du?

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
Felkod40

Permalänk
Medlem
Skrivet av heretic16:

Det fungerar inte att ansluta från min klient då mitt program ger ett felmeddelande att "Cannot connect to this MySQL server: null, not allowed for 'host'@'10.x.x.x.' to connect this MySQL server".

I detta fall är 10.x.x.x. klientens egna IP adress.

Har du ett konto som t.ex. 'dev'@'%' som du kan testa med bara? % tillåter anslutningar från överallt.
Annars behöver du göra en GRANT på CONNECT-behörigheten.

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
Felkod40

Permalänk
Skrivet av freddyfresh:

Du kan använda verktyget MySQL Workbench istället, det är relativt enkelt och gratis.
Vad gäller din server, vad för server kör du?

Min server är MySQL server.

Permalänk
Skrivet av freddyfresh:

Har du ett konto som t.ex. 'dev'@'%' som du kan testa med bara? % tillåter anslutningar från överallt.
Annars behöver du göra en GRANT på CONNECT-behörigheten.

Jag har ett konto som är "namn"@"ipadressServer" och den har fulla rättigheter.

Permalänk

Hos min klient så får jag ett null-meddelande att servern tillåter inte min klients IP och "host" att ansluta servern. Det betyder att jag måste ha anslutning till min server från min klient, trots ping fungerade inte.

Men jag måste ändra rättigheterna på min användare så alla kan få använda den.

EDIT:

Fungerar fortfarande inte. Servern nekar klienten.

Permalänk
Medlem
Skrivet av ecce:

Ett par saker behöver fungera för att detta ska vara genomförbart:

- Du behöver ha en route mellan subnäten.
- Det får inte finnas nån brandvägg längs vägen eller på mysqlservern som blockerar inkommande anslutningar (tcp port 3306)
- MySQL måste tillåta externa anslutningar. Default gör den inte det har jag för mig. I Linux ändrar du i /etc/my.cnf eller motsvarande fil. I Windows vet jag inte.

Ett enkelt sätt att testa är att använda telnet på rätt port, vilket för MySQL är 3306 om du inte ändrat det på servern. Kör CMD och testa:

C:/>telnet 10.10.10.10 3306
Trying 10.10.10.10...
Connected to 10.10.10.10.
Escape character is '^]'.

Får du upp ovanstående innebär det att du kan ansluta till MySQL.

Skrivet av heretic16:

När jag pingar från server -> client så fungerar det, men när jag pingar från client -> server så fungerar det inte. Dem är på samma subnät.

Tar en kopia @ecce post eftersom du svarade på något helt annat än det han skrev.

Har du verkligen från klienten kört C:/>telnet 10.10.10.10 3306 mot servern? Ändra 10.10.10.10 till serverns ip om det inte stämmer. vad får du för svar?

Visa signatur

Du behöver inte vaccinera dina barn, bara dom du vill behålla.

Permalänk
Skrivet av mikgus:

Tar en kopia @ecce post eftersom du svarade på något helt annat än det han skrev.

Har du verkligen från klienten kört C:/>telnet 10.10.10.10 3306 mot servern? Ändra 10.10.10.10 till serverns ip om det inte stämmer. vad får du för svar?

För det första så finns det inget telne och telnet kommando i Windows. Inte hos mig. Jag använder ping och från server -> klient fungerar, men inte tvärt om.

Min server får anslutning från klienten, men min SQL server nekar klienten som meddelandet säger "Host 'xxx.xx.xxx.xxx' is not allowed to connect to this MySQL server"

Jag har ändrat min användare till "mittanvändarnamn"@"minServerIPAdress" vilket är det som finns på ipconfig när man kör DOS på datorn.

Permalänk
Medlem
Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
Felkod40

Permalänk
Skrivet av freddyfresh:

Nu hittar jag inte lösenordet till klienten. Endast servern har jag lösenord till. Så jag tror jag får använda andra metoder för att ansluta.

Permalänk

Nu.

>telnet IPserver 3306

gav detta meddelande: host@IPserver not allowed to connect to mysql server

Ping fungerar fortfarande inte.

Permalänk
Medlem
Skrivet av heretic16:

Nu.

>telnet IPserver 3306

gav detta meddelande: host@IPserver not allowed to connect to mysql server

Ping fungerar fortfarande inte.

Vilket operativsystem ligger din server på? Linux eller Windows?

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
Felkod40

Permalänk
Medlem
Skrivet av mikgus:

Tar en kopia @ecce post eftersom du svarade på något helt annat än det han skrev.

Jasså?

Windows brandvägg dumpar inkommande icmp echo som standard, vilket kan förklara varför ping till servern inte fungerar. Telnet trodde jag fanns i Windows, det är ett bra sätt att felsöka på. Om det funkar vet man att route mellan nät finns och ingen fw blockerar. Teoretiskt kan ju en fw på vägen blockera ping men tillåta tcp på 3306. Jag skulle säkerställa det innan jag börjar testa ändra saker på applikationsnivå. Netstat kanske inte heller finns i windows, annars kan man använda det för att se hur mysql lyssnar.

$ netstat -an Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1822 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN <----- tcp6 0 0 :::80 :::* LISTEN

Visa signatur

ecce
#NATisNotASecurityFeature

Permalänk
Medlem
Skrivet av heretic16:

Nu.

>telnet IPserver 3306

gav detta meddelande: host@IPserver not allowed to connect to mysql server

Ping fungerar fortfarande inte.

Testa stänga av windowsbrandväggen helt på servern om det är okej, kolla om du kan nå mysql remote, slå sedan på brandväggen igen så vet du om det är den som blockerar eller inte.

Visa signatur

ecce
#NATisNotASecurityFeature