Hoe externe verbindingen met MySQL toe te staan

Als u met een MySQL-database werkt, bent u zich al bewust van de uitdagingen waarmee u te maken krijgt bij het beveiligen van uw database. Van pogingen om databases te hacken met behulp van SQL -injecties tot brute force-aanvallen, het is moeilijk om uw gegevens veilig te houden, vooral als u op afstand met een database werkt.

Er zijn manieren om een ​​SQL -server te configureren om externe verbindingen toe te staan, maar u moet voorzichtig zijn, aangezien het toestaan ​​van externe verbindingen op een MySQL -server uw database een gemakkelijk doelwit kan maken voor hackers. Als u veilige, externe verbindingen met een MySQL(MySQL) -database wilt toestaan, moet u het volgende weten.

Voordat je begint(Before You Begin)

Voordat u wijzigingen aanbrengt in uw MySQL -database, is het belangrijk dat u een back-up van uw database(backup your database) maakt, vooral als u op een productieserver werkt (een server die actief wordt gebruikt). Alle wijzigingen die u aanbrengt in uw database of de server die deze host, kunnen leiden tot ernstig gegevensverlies als er iets misgaat.

Mogelijk merkt u ook dat wijzigingen in de verbindingen van uw server ervoor kunnen zorgen dat u er later geen toegang meer toe hebt. Als dit gebeurt, moet u mogelijk een serverbeheerder raadplegen voor verdere ondersteuning. Het is een goed idee om eventuele wijzigingen uit te proberen op een lokaal draaiende MySQL - server om te controleren of uw wijzigingen werken voordat u ze op afstand probeert.

Het is ook waarschijnlijk dat als u wijzigingen aanbrengt op een externe server, u een veilige manier nodig heeft om verbinding te maken en wijzigingen aan te brengen. SSH (Secure Shell) is vaak de beste manier om dit te doen, omdat u hiermee verbinding kunt maken met uw externe server. U kunt SSH ook gebruiken om verbinding te maken met servers op uw lokale netwerk, zoals die op een Raspberry Pi worden gehost(hosted on a Raspberry Pi) .

Deze handleiding leidt u door de stappen voor het configureren van MySQL om externe verbindingen toe te staan, maar u moet er eerst voor zorgen dat u directe of externe toegang hebt tot de server die uw MySQL -server host .

Stel(Suppose) je hebt geen externe toegang tot je server via bijvoorbeeld SSH . In dat geval kunt u uw MySQL - database niet configureren om rechtstreeks externe verbindingen toe te staan, tenzij uw root-mySQL-account al externe verbindingen toestaat. U moet deze verbinding dus eerst tot stand brengen voordat u verder kunt gaan.

Uw MySQL-configuratiebestand bewerken(Editing Your MySQL Configuration File)

De eerste stap bij het configureren van MySQL om externe verbindingen toe te staan, is het bewerken van uw MySQL -configuratiebestand. In dit stadium gaat deze handleiding ervan uit dat u al verbinding hebt gemaakt met de server, pc of Mac die uw mySQL-database op afstand host en dat u consoletoegang hebt. 

Als alternatief kunt u een lokale MySQL -server configureren met behulp van een open terminal op Mac of Linux of een teksteditor op Windows .

  1. Gebruik om te beginnen de teksteditor van uw favoriete console om uw MySQL -databasebestand te bewerken. Typ onder Linux sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf in een terminal- of SSH - venster om dit bestand te bewerken met de nano - editor (ervan uitgaande dat uw MySQL - database zich op de standaardlocatie bevindt)

  1. Als u Windows gebruikt, opent u Verkenner(File Explorer) en opent u de map met uw MySQL- installatie (bijv. C:/Program Files/MySQL/MySQL Server 8.0 ). Open het my.ini -bestand met uw standaardteksteditor (bijv. Kladblok(Notepad) ) door op het item te dubbelklikken. Als het er niet is, maak dan eerst het bestand(create the file first) aan .

  1. Open op Mac een terminalvenster en typ sudo nano /usr/local/etc/my.cnf . Dit is het standaard configuratiebestand voor MySQL als je (MySQL)MySQL hebt geïnstalleerd met homebrew(using homebrew) .

De locaties waarnaar hierboven wordt verwezen, zijn de standaardlocaties voor MySQL -configuratiebestanden. Als deze opdrachten niet werken, moet u handmatig naar de relevante bestanden ( my.cnf , mysqld.cnf of my.ini ) zoeken om het relevante bestandspad te vinden.

Een veilig IP-bereik voor bindingsadressen instellen(Setting a Safe Bind-Address IP Range)

  1. Nadat u het MySQL -configuratiebestand voor uw server hebt geopend, gebruikt u de pijltjestoets op uw toetsenbord om het bindadresgedeelte(bind-address) van het bestand te bereiken. Dit IP-bereik beperkt de verbindingen met uw database, die doorgaans is ingesteld om alleen verbindingen vanaf de lokale computer of server toe te staan ​​met 127.0.0.1 .

  1. Als u uw MySQL(MySQL) -database wilt configureren om verbindingen van apparaten met uw huidige internetverbinding toe te staan, zoek dan eerst uw openbare IP-adres(find your public IP address) en vervang vervolgens 127.0.0.1 door dat IP-adres. U kunt het ook vervangen door een IP-adres voor het apparaat of de server waarvan u verbindingen wilt toestaan.

  1. In sommige omstandigheden wilt u misschien alle(all) externe verbindingen met een MySQL- database toestaan. Dit brengt een extreem risico(extreme risk) met zich mee en mag niet worden gebruikt op een productieserver. Als u dit echter wilt toestaan, vervangt u 127.0.0.1 door 0.0.0.0 .

  1. Noteer de poortwaarde(port ) in het gedeelte Basisinstellingen(Basic Settings) . Dit is vereist in de volgende sectie. Als het niet zichtbaar is, wordt de standaardwaarde gebruikt, namelijk poort 3306 . U kunt uw eigen poort toevoegen door port = xxxx op een nieuwe regel te typen, waarbij u xxxx vervangt door een geschikte poortwaarde.

  1. Nadat u het bindadres(bind-address ) in uw MySQL - configuratiebestand hebt geconfigureerd, slaat u het bestand op. Als je Linux gebruikt, selecteer je Ctrl + O en Ctrl + X om dit te doen. Selecteer op Mac Command + O en Command + X . Windows-gebruikers kunnen opslaan door Bestand(File ) > Opslaan(Save) te selecteren .

  1. Vervolgens kunnen Linux- en Mac - gebruikers MySQL herstarten door mysql.server stop && mysql.server start of mysql.server restart te typen . Mogelijk moet u de opdracht verhogen met sudo(using sudo) (bijv. sudo mysql.server restart ) en het juiste pad naar het mysql.server-bestand gebruiken (bijv. /usr/local/bin/mysql.server ).

  1.  Als de bovenstaande opdracht niet werkt, probeer dan sudo service mysql restart .

  1. Om MySQL op Windows opnieuw te starten , opent u een nieuw PowerShell -venster door met de rechtermuisknop op het menu Start te klikken en (Start)Windows PowerShell (Admin) te selecteren . Typ in het PowerShell-venster net stop mysql80 gevolgd door net start mysql80 , waarbij u mysql80(mysql80) vervangt door de juiste servicenaam op uw pc.

Als u niet zeker weet wat de juiste servicenaam is in Windows , typt u net start om deze te vinden. Als u uw configuratie niet opnieuw kunt laden, start u uw server opnieuw op en laadt u MySQL handmatig (indien nodig) opnieuw.

Uw firewalls configureren(Configuring Your Firewalls)

In dit stadium moet uw MySQL - database externe verbindingen van apparaten toestaan ​​met behulp van het IP-adres dat u instelt als de bindadreswaarde(bind-address) in uw MySQL -configuratiebestand (of van alle apparaten als u deze waarde in plaats daarvan instelt op 0.0.0.0 ). Verbindingen worden echter nog steeds geblokkeerd door uw apparaat of netwerkfirewall(device or network firewall) .

De meeste servers en pc's gebruiken een firewall om verbindingen te blokkeren, tenzij toegang tot een specifieke poort wordt verleend. De stappen om dit te configureren variëren, afhankelijk van of u MySQL op Windows of Linux gebruikt . Mac -firewalls zijn standaard uitgeschakeld, dus u hoeft hier geen extra stappen uit te voeren.

Linux-firewalls configureren(Configure Linux Firewalls)

Veel Linux-servers gebruiken iptables als het standaard firewall-hulpprogramma. U kunt het configureren door de onderstaande stappen te volgen.

  1. Open een terminal- of SSH - verbinding en typ sudo iptables -A INPUT -p tcp -s XXXX –dport YYYY -j ACCEPT . Vervang XXXX door het IP-adres van het apparaat waarvan u (X.X.X.X)MySQL - verbindingen wilt toestaan , en vervang YYYY door de overeenkomende poortwaarde uit uw MySQL (from)-(MySQL) configuratiebestand (bijv. 3306 ).

  1. Hiermee wordt de firewall tijdelijk geconfigureerd. Als u een op Debian of Ubuntu gebaseerde Linux - server gebruikt, maakt u deze wijziging permanent door sudo netfilter-persistent save en sudo netfilter-persistent reload in het terminal- of SSH-venster te typen.

Als iptables niet de standaard firewalltool voor je Linux - distributie is, moet je de gebruikershandleiding van je distributie raadplegen voor meer informatie. Als bepaalde pakketten (zoals netfilter-persistent ) niet beschikbaar zijn, gebruik dan de softwarerepositorytool van uw distributie om het te installeren (bijv. sudo apt install netfilter-persistent ).

Windows Firewalls configureren(Configure Windows Firewalls)

Als u een Windows-pc of -server gebruikt om uw database te hosten, kunt u uw firewall als volgt configureren:

  1. Klik met de rechtermuisknop op(Right-click) het menu Start en selecteer Uitvoeren(Run) .

  1. Typ in het vak Uitvoeren (Run)wf.msc en selecteer OK .

  1. Selecteer in het venster Windows Defender Inkomende regels(Inbound Rules ) > Nieuwe regel(New Rule) .

  1. Selecteer in het venster Wizard Nieuwe inkomende regel de optie (New Inbound Rule Wizard)Poort(Port ) > Volgende(Next) .

  1. Selecteer in het volgende menu TCP uit de opties, typ 3306 (of welke poortwaarde dan ook wordt vermeld in uw MySQL -configuratiebestand) en selecteer vervolgens Volgende(Next) .

  1. Laat de standaardoptie in het menu Actie op (Action)De verbinding toestaan(Allow the connection) ​​ingeschakeld en selecteer vervolgens Volgende(Next) .

  1. Bevestig dat u wilt dat de regel van toepassing is op alle netwerktypen en selecteer vervolgens Volgende(Next)

  1. Typ een beschrijvende naam voor de regel (bijv. MySQL ) in de opgegeven poort en selecteer vervolgens Voltooien(Finish) om deze toe te voegen aan uw lijst met firewallregels.

Als u problemen ondervindt bij het verbinden, herhaalt u bovenstaande stappen en zorgt u ervoor dat u een nieuwe regel voor uitgaand verkeer(outbound rule ) maakt in uw firewall-instellingen met dezelfde gegevens (poort 3306, enz.). Mogelijk moet u ook uw lokale netwerkrouter configureren om de noodzakelijke geblokkeerde poorten(open the necessary blocked ports) te openen om inkomende en uitgaande verbindingen met uw database mogelijk te maken. 

Verbinding maken met een externe server met MySQL(Connecting to a Remote Server Using MySQL)

Nadat u uw MySQL - database hebt geconfigureerd om externe verbindingen toe te staan, moet u er daadwerkelijk een verbinding mee tot stand brengen. U kunt dit doen met de opdracht mysql ( mysql.exe op Windows ) vanuit een terminal- of PowerShell - venster.

Als u Windows gebruikt, moet u ervoor zorgen dat MySQL lokaal is geïnstalleerd(MySQL is installed locally) voordat u begint. Mac - gebruikers kunnen MySQL installeren (MySQL) met homebrew(using homebrew) vanaf de terminal ( brew install mysql ), terwijl Linux - gebruikers hun lokale app-repository (bijv. sudo apt install mysql ) kunnen gebruiken om de benodigde pakketten te installeren.

Verbinding maken met MySQL op Linux of Mac(Connecting to MySQL on Linux or Mac)

  1. Om verbinding te maken met uw externe MySQL -server op Mac of Linux , opent u een nieuw terminalvenster en typt u mysql -u gebruikersnaam -h XXXX:XXXX -p(mysql -u username -h X.X.X.X:XXXX -p) . Vervang XXXX:XXXX door uw externe server IP-adres en poortnummer (bijv. 100.200.100.200:3306 ) en gebruikersnaam(username) door uw MySQL-gebruikersnaam.

  1. Bevestig uw wachtwoord wanneer daarom wordt gevraagd. Als de verbinding is gelukt, verschijnt er een succesbericht in de terminal.

Verbinding maken met MySQL op Windows(Connecting to MySQL on Windows)

  1. Om verbinding te maken met een externe MySQL -server op Windows , opent u een nieuw PowerShell -venster door met de rechtermuisknop op het menu Start te klikken en (Start)Windows PowerShell (Admin) te selecteren .

  1. cd “C:\Program Files\MySQL\MySQL Workbench 8.0\ " in het nieuwe PowerShell-venster om de juiste map in te voeren en vervang deze map door de juiste installatiemap op uw pc. Als uw versie van MySQL bijvoorbeeld 8.0.1 is, gebruikt u in plaats daarvan de map MySQL Workbench 8.0.1 .

  1. Typ vanaf daar .\mysql.exe -u username -h X.X.X.X:XXXX -p . Vervang XXXX:XXXX door uw externe server IP-adres en poortnummer (bijv. 100.200.100.200:3306 ) en gebruikersnaam(username) door een MySQL - gebruikersnaam die externe toegang mogelijk maakt (zoals root ). Volg(Follow) eventuele aanvullende instructies op het scherm.
  2. Geef uw wachtwoord op, wanneer daarom wordt gevraagd, om het aanmeldingsproces te voltooien en op afstand toegang te krijgen tot uw MySQL - database.

Als dit niet werkt, maak dan verbinding met de server of pc die uw MySQL -server host via SSH (of open deze rechtstreeks) met behulp van deze stappen en met het argument -h localhost . U kunt dan een geschikt gebruikersaccount aanmaken door de onderstaande stappen te volgen.

Externe gebruikerstoegang tot een MySQL-database toestaan(Allowing Remote User Access to a MySQL Database)

Op dit punt zou u in staat moeten zijn om op afstand verbinding te maken met uw MySQL -server met behulp van het root-gebruikersaccount van uw server of een ander gebruikersaccount met verhoogde bevoegdheden. Aangezien dit toegangsniveau onveilig is, kunt u er de voorkeur aan geven een meer beperkte account aan te maken voor toegang tot uw MySQL - database.

Dit account heeft beperkte toegang tot uw MySQL -server, waardoor het alleen met geselecteerde databases kan communiceren. Het zal geen serieuzere wijzigingen kunnen aanbrengen, zoals toegang tot andere databasegegevens, het maken van nieuwe gebruikersaccounts, enz. 

U moet de mogelijkheid hebben om op afstand in te loggen op uw MySQL -server. Als u uw root-account niet op afstand kunt gebruiken, moet u toegang krijgen tot de shell van uw server met behulp van de mysql - opdracht via een externe SSH - verbinding of door rechtstreeks toegang te krijgen tot de pc of server die de server host.

  1. Typ in uw externe MySQL - shell (met behulp van de mysql -tool) CREATE USER “username”@”x.x.x.x” IDENTIFIED BY “password”; en selecteer Enter . Vervang gebruikersnaam(username ) door de gebruikersnaam die u wilt aanmaken, xxxx door het IP-adres waarvan u verbinding wilt maken en wachtwoord(password) door een geschikt wachtwoord.

  1. U moet uw nieuwe account de benodigde machtigingen verlenen. Typ hiervoor GRANT ALL ON databasename.* TO username@”x.x.x.x”; en vervang databasenaam, gebruikersnaam(databasename, username, ) en xxxx  door de juiste details. Vervang desgewenst databasenaam(databasename) door * om deze toegang te verlenen tot alle databases. 

Als de toegang is verleend, gebruikt u de stappen in de sectie hierboven om op afstand verbinding te maken met uw server met uw nieuwe account (bijv. mysql -u gebruikersnaam -h XXXX:XXXX -p(mysql -u username -h X.X.X.X:XXXX -p) ).

Uw databasegegevens beveiligen(Securing Your Database Data)

Of u nu met MySQL of een ander type SQL -database werkt, het is belangrijk om uw verbindingen veilig te houden om uw gegevensbeveiliging te behouden. Een goede manier om dit te doen, is door SSH-sleutels te genereren voor externe toegang(generate SSH keys for remote access) tot uw server, in plaats van te vertrouwen op verouderde (en gemakkelijk te raden) wachtwoorden.

Als u zich zorgen maakt over gegevensverlies, kunt u eenvoudig online een back-up van uw database maken(back up your database) . De meeste databases worden uitgevoerd met Linux -servers - u kunt eenvoudig een back-up van Linux-bestanden automatiseren(automate a Linux file backup easily) . Als u MySQL op Windows gebruikt, kunt u een soortgelijk automatisch back-upsysteem voor Windows(automatic backup system for Windows) instellen , zodat u in geval van nood uw gegevens kunt herstellen.



About the author

Ik ben een webontwikkelaar met meer dan 10 jaar ervaring in het werken met de browsers Firefox en Google Docs. Ik ben een specialist in het maken van eenvoudige maar krachtige online applicaties en heb webgebaseerde oplossingen ontwikkeld voor zowel kleine bedrijven als grote organisaties. Mijn klantenbestand omvat enkele van de grootste namen in het bedrijfsleven, waaronder FedEx, Coca Cola en Macy's. Mijn vaardigheden als ontwikkelaar maken mij de ideale kandidaat voor elk project dat snel en efficiënt moet worden voltooid - van het ontwikkelen van aangepaste websites tot het maken van robuuste e-mailmarketingcampagnes.



Related posts