Het kan soms handig zijn om externe verbindingen met MySQL in te schakelen. Hierdoor kunt u rechtstreeks verbinding maken met MySQL op een van uw servers vanuit een applicatie of MySQL-client die op een ander systeem draait.
Er zijn twee verschillende manieren om op afstand toegang te krijgen tot MySQL:
- Een SSH-tunnel gebruiken.
- Directe toegang tot MySQL mogelijk maken vanaf externe systemen.
Verbinding maken met MySQL via een SSH-tunnel
Het gebruik van een SSH-tunnel is de gemakkelijkste en veiligste optie voor externe MySQL-toegang voor ontwikkelingsdoeleinden. Een SSH-tunnel zorgt ervoor dat het lijkt alsof MySQL op uw lokale systeem draait. SSH doet dit door een lokale poort te openen en alle communicatie via die poort naadloos over te dragen naar MySQL op uw server.
Om een SSH-tunnel van Mac of Linux te maken, kunt u de opdrachtregel SSH-opdracht uitvoeren met de -L
om lokale port forwarding in te schakelen.
ssh -L localhost:2000:localhost:3306 serverpilot@SERVER_IP_ADDRESS
In het bovenstaande voorbeeld zou SSH poort 2000 op uw lokale systeem openen en u kunt vervolgens communiceren met MySQL door verbinding te maken met deze lokale poort. U kunt bijvoorbeeld verbinding maken met het MySQL-commando:
mysql --protocol=tcp --host=localhost --port=2000 --user=DB_USER_NAME -pNiet weglaten --protocol=tcp of MySQL kan in stilte de --host . negeren en --port opties.
U kunt ook SSH-tunnels op Windows maken met PuTTy, de populaire Windows SSH-client.
Directe toegang tot MySQL vanaf externe systemen inschakelen
Waarschuwing! Het toestaan van directe toegang tot MySQL verhoogt het risico dat uw server wordt gecompromitteerd door aanvallers. Waarschuwing! MySQL maakt standaard geen gebruik van beveiligde verbindingen. De MySQL-handleiding bevat meer informatie over SSL met MySQL.Stap 1:Configureer MySQL om op alle interfaces te luisteren.
Standaard luistert MySQL alleen naar verbindingen op localhost , dus de eerste stap is om MySQL opnieuw te configureren op uw databaseserver om op alle interfaces te luisteren. Log hiervoor in op uw server als root .
Als u een Ubuntu 16.04- of 18.04-server gebruikt, bewerk dan dit bestand:
/etc/mysql/mysql.conf.d/mysqld.cnf
Voor 14.04 of 12.04 servers, bewerk dit bestand:
/etc/mysql/my.cnf
Zoek de volgende regel in beide bestanden:
bind-address = 127.0.0.1
Wijzig het bind-adres naar 0.0.0.0 :
bind-address = 0.0.0.0
Sla dit bestand op en voer het volgende commando uit als root :
sudo service mysql restart
Stap 2:Open TCP-poort 3306 in de firewall van uw server.
De door ServerPilot geconfigureerde firewall blokkeert alle toegang tot MySQL van buiten uw server. U moet dus uw firewall aanpassen om toegang tot MySQL toe te staan.
Raadpleeg ons artikel over het aanpassen van uw firewall om toegang te krijgen tot MySQL van buiten uw server.
Extra stap voor EC2:sta TCP-poort 3306 toe in uw beveiligingsgroepen.
Als dit een EC2-server is, moet u ook poort 3306 toestaan in de beveiligingsgroepen van uw server.
Configureer uw app(s) om de externe host te gebruiken.
Nadat u de externe MySQL-server hebt ingesteld, wilt u uw app(s) configureren om die host te gebruiken voor databasetransacties. Dit wordt meestal ingesteld in het configuratiebestand van de app en we gebruiken WordPress als ons voorbeeld.
Open het wp-config.php-bestand van de app.
Op deze regel:
define('DB_HOST', 'localhost');
Wijzig 'localhost' in het IP-adres of de volledige hostnaam van uw externe MySQL-server. Het IP-adres is doorgaans een snellere en betrouwbaardere keuze, omdat het niet afhankelijk is van DNS-resolutie.
Sla het bestand op en sluit af, en je bent helemaal klaar! U kunt nu uw app testen om te controleren of deze correct werkt.