Gå til innhold

Kople seg til MySQL fra annen server?


Anbefalte innlegg

Hallo!

 

Jeg har idag et oppsett som fungerer: En ekstern klient kopler seg til en webserver som ligger på Raspberry Pi. På denne er det også en MySQL-database. Klienten fyller inn verdier i nettsiden som oppdaterer databasen.

 

Et c++ program kjører også på Raspberry Pi. Denne henter verdier fra databasen, og sender disse verdiene serielt ut via et SPI-interface.

 

 

Alt ovenfor fungerer, men nå ønsker jeg å flytte databasen (og evt. websiden) til en stasjonær pc. Dette for å kunne ha "ubegrenset" lagringsplass, samt å ikke belaste prosessoren til RPi'en mer enn nødvendig, da seriell-overføringen krever sitt.

 

Jeg får ikke til dette. Raspberry Pi har ip 192.168.0.196 og den "nye" pc-en har ip 192.168.0.195 (denne kjører forøvrig på en virituell maskin med VMplayer satt til bridge).

 

Jeg har gått inn i /etc/MySQL/my.cnf og redigert følgende fil, for så å restarte MySQL.

 

 

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
bind-address = 192.168.0.196

Har også prøvd å kommentere begge linjene uten hell. Endrer jeg fra 127 til 128 så får jeg ikke engang lov til å logge inn på PhpMyadmin, så jeg vet jeg redigerer på riktig fil.

 

Jeg får ikke engang til å kople RPi'en til "seg selv" ved å bytte ut "localhost" med "192.168.0.196", selvom jeg endrer my.cnf.

 

Noen idé om hvordan jeg kan fortsette?

Lenke til kommentar
Videoannonse
Annonse

Et av forumene jeg var innom sa noe om at jeg måtte kople meg med både ip og port.

 

Prøvde noe sånt som dette, men fikk connection failed

 

 


Hallo!

 

Jeg har idag et oppsett som fungerer: En ekstern klient kopler seg til en webserver som ligger på Raspberry Pi. På denne er det også en MySQL-database. Klienten fyller inn verdier i nettsiden som oppdaterer databasen.

 

Et c++ program kjører også på Raspberry Pi. Denne henter verdier fra databasen, og sender disse verdiene serielt ut via et SPI-interface.

 

 

Alt ovenfor fungerer, men nå ønsker jeg å flytte databasen (og evt. websiden) til en stasjonær pc. Dette for å kunne ha "ubegrenset" lagringsplass, samt å ikke belaste prosessoren til RPi'en mer enn nødvendig, da seriell-overføringen krever sitt.

 

Jeg får ikke til dette. Raspberry Pi har ip 192.168.0.196 og den "nye" pc-en har ip 192.168.0.195 (denne kjører forøvrig på en virituell maskin med VMplayer satt til bridge).

 

Jeg har gått inn i /etc/MySQL/my.cnf og redigert følgende fil, for så å restarte MySQL.

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
bind-address = 192.168.0.196

Har også prøvd å kommentere begge linjene uten hell. Endrer jeg fra 127 til 128 så får jeg ikke engang lov til å logge inn på PhpMyadmin, så jeg vet jeg redigerer på riktig fil.

 

Jeg får ikke engang til å kople RPi'en til "seg selv" ved å bytte ut "localhost" med "192.168.0.196", selvom jeg endrer my.cnf.

 

Noen idé om hvordan jeg kan fortsette?

Lenke til kommentar

Ser ut som du prøver å binde mysql til en ip på en annen maskin (pi'en), prøv bind-address = 192.168.0.195

 

edit: mysql har en default-port, hvis du ikke har endret denne noe sted skal det ikke være nødvendig å angi den i tilkoblingsstrengen heller.

 

dobbeltetdit: ok, du har ikke flytta databasen ennå, skjønner jeg nå.... da blir det seff. .196 og ikke .195 som skal brukes i bind-address.

Endret av quantum
Lenke til kommentar

Det letteste her er vel bare å binde til "0.0.0.0" om du ønsker å la andre maskiner koble til serveren? Med mindre du har flere nettverkskort i maskinen, og vil sørge for at det kun er mulig å koble til via det ene nettverkskortet ser jeg ingen grunn til å ikke bruke "0.0.0.0".

 

Når du binder til en IP sier du til maskinen vilket interface den skal bruke. Hvis man simplifiserer det litt kan du se på interface som et nettverkskort. La oss si du har en server som har et kablet interface, samt et trådløst interface - da vil du kunne ha følgende (IP-addressene her er de som er tildelt din maskin):

 

Localhost: 127.0.0.1

Kablet: 192.168.0.155

Trådløst: 192.168.0.156

 

Om du nå binder på "127.0.0.1" så vil det kun være mulig å koble til socketen fra localhost. Binder du til "192.168.0.155" vil det være mulig å koble til maskinen via det kablede nettverket. Det vil si at de må da bruke "192.168.0.155" når de prøver å koble til serveren. Om andre utenfor nettverket ditt ønsker å koble til må du sørge for at port-forwarding er gjort mot denne addressen, og ikke til det trådløst.

 

Om du binder til "192.168.0.156" så vil det kun være mulig å koble til via det trådløse nettverket. Det blir det samme som over, men du må da la klientene bruke denne IP-addressen i stede.

 

Om du binder til "0.0.0.0" så betyr dette "Alle interfaces". Det vil da være mulig å koble til via localhost, kablet og trådløst nettverk. For de fleste vil dette være det letteste og ikke gi noen flere sikkerhetsproblemer enn det man allerede får ved å tillate tilkoblinger fra utenfor "localhost".

 

-----------

Kort fortalt: Når du binder sier du ikke hvilke IP-addresser som får lov å koble til serveren, du sier hvilket nettverkskort (egentlig interface) som kan brukes.

Endret av etse
Lenke til kommentar

Hvis du skal flytte databasen må du installere mysql på nytt på den maskinen du skal flytte til. Så eksporterer du databasen fra den gamle maskinen og importerer på den nye, phpmyadmin har funksjonalitet for dette.

Cli kommando for eksport

mysqldump databasenavn --user=brukernavn --password=passord > exportfilnavn.sql
Import

mysql -u brukernavn -p databasenavn < file.sql
Det er sikkert mulig å kopiere database filene eller sette opp replikering i mellom databasene, men det har jeg ikke noe erfaring med.

 

På den nye maskinen så må du åpne for at brukere kan koble seg til databasen fra andre maskiner. I phpmyadmin gjør du dette under Privileges -> add new user eller Edit Privileges -> velg og sett riktig verdi i Host feltet

Sql (for det meste generert av phpmyadmin i dette tilfellet)

CREATE USER 'brukernavn'@'host, ip eller % for alle' IDENTIFIED BY 'passord';

GRANT USAGE ON *.* TO 'brukernavn'@'host, ip eller % for alle' IDENTIFIED BY 'password' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
Endret av Crowly
  • Liker 1
Lenke til kommentar

Hei og takk! Fikk det til nå. Var det med rettigheter i phpmyadmin som var cluet. Opprettet en ny bruker med % som rettighet for host og da løste det seg.

 

Men gud bedre så tregt det gikk over nettverket :O I stede for å kjøre rundt 20 oppkoplinger i løpet av et sekund, brukte den 3 sekunder på å å gjøre en enkel oppkopling. Men har en følelse på at routeren min ikke er helt frisk, så jeg håper det er derfor.

 

edit: ser ut til å funke både med 127.0.0.1, og med 127.0.0.1 kommentert vekk.

Endret av r2d290
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...