Verbinding met Mysql (PC) vanaf Pi in eigen netwerk

  • 18 January 2023
  • 8 reacties
  • 93 Bekeken

  • is een nieuwe Poster
  • 4 reacties

Vanaf mijn Rasbperry Pi 3 wil ik graag met Python verbinding maken met een MySQL 8 database die op mijn Windows 10 PC D schijf draait vanaf poort 33601. Momenteel heb ik in de database alle privileges toegezegd voor een user op 192.168.1.%, oftewel eigen netwerk.

Via mijn router en/of weet ik echter verder niet hoe ik het verder moet instellen. Ik wil de database niet publiekelijk maken voor buiten mijn netwerk, maar dus puur in mijn eigen netwerk willen gebruiken.

Hoe moet ik te werk gaan? Mijn router is een HG659.


8 reacties

Reputatie 7
Badge +2

Meerdere instanties van MySQL bedoel ik dan inderdaad MySQL 5 en 8, drie verschillende versies van Laragon om het simpel te houden. Verbinding is inmiddels gelukt.

Om het simpel te houden? ūü§Ēūüę£

nou ja, als jij dat kan managen.

in ieder geval fijn dat de verbinding gelukt is, een cursusje database management er achteraan en we gaan verder met ademhalen.

MariaDb al geprobeerd? Is een afgeleide van MySql .

Reputatie 7
Badge +17

Hoi @GMAC06 welkom bij de community. 

Die poort is vanuit de buitenwereld niet bereikbaar zolang je GEEN portforwarding in je router instelt. De poort is wel voor interne devices,  in jouw LAN bereikbaar. 

Reputatie 7
Badge +2

Vanaf mijn Rasbperry Pi 3 wil ik graag met Python verbinding maken met een MySQL 8 database die op mijn Windows 10 PC D schijf draait vanaf poort 33601. Momenteel heb ik in de database alle privileges toegezegd voor een user op 192.168.1.%, oftewel eigen netwerk.

Controleer op de PC Windows de Firewall.
Wat is de reden om de standaard poort 3306 van MySQL te wijzigen. Dergelijke constructies zijn in het interne netwerk niet nodig. Maakt benaderen alleen maar complexer omdat bij elke verbinding de poort vermeld moet gaan worden.
 

Via mijn router en/of weet ik echter verder niet hoe ik het verder moet instellen. Ik wil de database niet publiekelijk maken voor buiten mijn netwerk, maar dus puur in mijn eigen netwerk willen gebruiken.

Hoe moet ik te werk gaan? Mijn router is een HG659.

Geen noodzaak om instellingen in de router te wijzigen, Daar zullen alleen poort 80 en 443 standaard verkeer vanaf internet doorlaten.

Indien je ooit een verbinding vanaf het Internet toe gaat staan pas je poortmapping toe om daarmee scans op bekende poorten moeilijker te maken. Dan kun je een poortmapping aanmaken van bijvoorbeeld poort 33601 naar het IP van de PC met de MySql database poort 3306

 

De standaard poort heb ik aangepast omdat ik meerdere databases heb draaien van MySQL. Dient er wel in de Windows firewall de poort ingesteld te worden dan?

Vanaf mijn Raspberry Pi heb ik een netcat geprobeerd, echter zonder verbindingsmelding en mijn Python geeft ook een error melding weer. Het desbetreffende netcat commando:
netcat -u 192.168.1.102 33061

Melding in Python: "Can't connect to MySQL server on '192.168.1.102:33061' ([Errno -2] Name or service not known.

Vanaf mijn Windows PC heb ik netstat commando gedaan, met:
netstat -na

TCP    0.0.0.0:33061          0.0.0.0:0              LISTENING

Hierbij Windows firewall instellingen voor binnen en buiten verbindingen:
 

Binnenkomende verbinding
Buitengaande verbinding

 

Reputatie 7
Badge +2

De standaard poort heb ik aangepast omdat ik meerdere databases heb draaien van MySQL. Dient er wel in de Windows firewall de poort ingesteld te worden dan?

Vanaf mijn Raspberry Pi heb ik een netcat geprobeerd, echter zonder verbindingsmelding en mijn Python geeft ook een error melding weer. Het desbetreffende netcat commando:
netcat -u 192.168.1.102 33601

Melding in Python: "Can't connect to MySQL server on '192.168.1.102:33061' ([Errno -2] Name or service not known

Waarom meerdere poorten voor verschillende databases?
Is door mij nog nooit op die manier toegepast. Alle database handelingen via dezelfde poort. MySql-server cre√ęert voor elke verbinding een uniek (tijdelijk) Id om de verbindingen te identificeren.

De foutmelding geeft aan dat MySql niet bereikt kan worden.

Windows toets ‚Üí typ: firewall | Windows Defender Firewall opstarten. Bij geavanceerde instellingen Kiezen voor inkomende verbindingen ‚Üí NIeuwe regel maken voor poort en programma.

Belangrijk is wel om de windows PC met MySql een VAST IP adres te geven.
En dat doe je in de router als dat de DHCP server is.

Helaas geen HG659 om aan te geven waar.

Netwerkinstelling DHCP server. Het aantal adressen van de pool laten beginnen bij b.v. 192.168.1.50 tot 192.168.1.254. Zo zijn alle IP's van 2 tot 49 als vaste IP adressen in het netwerk toe te wijzen.

Daarna in de router het MAC adres van de windows PC opgeven als een vast ip adres op bijvoorbeeld 192.168.1.5 

Op deze manier is het MySql server IP adres altijd bekend en voorkom je problemen als het IP adres een keer veranderd door wijzigingen in de IP pool van je DHCP server. Deze instelling is onvermijdelijk en op kleine schaal het makkelijkst uit te voeren.

Voor de Windows PC heb ik (inderdaad al) een statisch IP via de router ingesteld, via DHCP reservering. Na de firewall aangepast te hebben heb ik nog eens netstat gedaan.

Middels netcat 192.168.1.102 33061 vanaf de Rasberry Pi krijg ik als antwoord:
J
8.0.31


Oftewel dit ziet eruit als het versienummer als response. Als ik via HeidiSQL dit controleer middels SELECT version(); zie ik inderdaad als antwoord: 8.0.31. Mijn Python script geeft ook geen foutmelding meer. Het was wel vreemd dat netcat met -u niet direct iets deed.

Reputatie 7
Badge +2

De standaard poort heb ik aangepast omdat ik meerdere databases heb draaien van MySQL. Dient er wel in de Windows firewall de poort ingesteld te worden dan?
 

Meerdere instanties van MySql ??

Met 1 MySql server draai je toch meerdere databases met bijbehorende tabellen?

Meerdere instanties van MySQL bedoel ik dan inderdaad MySQL 5 en 8, drie verschillende versies van Laragon om het simpel te houden. Verbinding is inmiddels gelukt.

Reageer