Es kann manchmal nützlich sein, Remote-Verbindungen zu MySQL zu aktivieren. Dadurch können Sie sich von einer Anwendung oder einem MySQL-Client, der auf einem anderen System ausgeführt wird, direkt mit MySQL auf einem Ihrer Server verbinden.
Es gibt zwei verschiedene Möglichkeiten, auf MySQL remote zuzugreifen:
- Verwendung eines SSH-Tunnels.
- Ermöglichung des direkten Zugriffs auf MySQL von entfernten Systemen.
Verbindung zu MySQL über einen SSH-Tunnel herstellen
Die Verwendung eines SSH-Tunnels ist die einfachste und sicherste Option für den Fernzugriff auf MySQL zu Entwicklungszwecken. Ein SSH-Tunnel lässt es so aussehen, als ob MySQL auf Ihrem lokalen System läuft. SSH tut dies, indem es einen lokalen Port öffnet und die gesamte Kommunikation über diesen Port nahtlos zu MySQL überträgt, das auf Ihrem Server läuft.
Um einen SSH-Tunnel von Mac oder Linux aus zu erstellen, können Sie den Befehlszeilen-SSH-Befehl mit -L
ausführen um die lokale Portweiterleitung zu aktivieren.
ssh -L localhost:2000:localhost:3306 serverpilot@SERVER_IP_ADDRESS
Im obigen Beispiel würde SSH Port 2000 auf Ihrem lokalen System öffnen, und Sie können dann mit MySQL kommunizieren, indem Sie sich mit diesem lokalen Port verbinden. Beispielsweise können Sie eine Verbindung mit dem MySQL-Befehl herstellen:
mysql --protocol=tcp --host=localhost --port=2000 --user=DB_USER_NAME -pLassen Sie --protocol=tcp nicht weg oder MySQL ignoriert den --host stillschweigend und --port Optionen.
Sie können SSH-Tunnel unter Windows auch mit PuTTy, dem beliebten Windows-SSH-Client, erstellen.
Ermöglichen des direkten Zugriffs auf MySQL von entfernten Systemen
Warnung! Das Zulassen des direkten Zugriffs auf MySQL erhöht das Risiko, dass Ihr Server von Angreifern kompromittiert wird. Warnung! MySQL verwendet standardmäßig keine sicheren Verbindungen. Das MySQL-Handbuch enthält weitere Informationen zu SSL mit MySQL.Schritt 1:Konfigurieren Sie MySQL so, dass es auf allen Schnittstellen lauscht.
Standardmäßig wartet MySQL nur auf localhost auf Verbindungen , also besteht der erste Schritt darin, MySQL auf Ihrem Datenbankserver neu zu konfigurieren, um auf allen Schnittstellen zu lauschen. Melden Sie sich dazu als root auf Ihrem Server an .
Wenn Sie einen Ubuntu 16.04- oder 18.04-Server ausführen, bearbeiten Sie diese Datei:
/etc/mysql/mysql.conf.d/mysqld.cnf
Bearbeiten Sie für 14.04- oder 12.04-Server diese Datei:
/etc/mysql/my.cnf
Suchen Sie die folgende Zeile in jeder Datei:
bind-address = 127.0.0.1
Ändern Sie die bind-Adresse auf 0.0.0.0 :
bind-address = 0.0.0.0
Speichern Sie diese Datei und führen Sie dann den folgenden Befehl als root aus :
sudo service mysql restart
Schritt 2:Öffnen Sie den TCP-Port 3306 in der Firewall Ihres Servers.
Die von ServerPilot konfigurierte Firewall blockiert jeglichen Zugriff auf MySQL von außerhalb Ihres Servers. Daher müssen Sie Ihre Firewall anpassen, um den Zugriff auf MySQL zuzulassen.
Um den Zugriff auf MySQL von außerhalb Ihres Servers zu öffnen, lesen Sie unseren Artikel zum Anpassen Ihrer Firewall.
Zusätzlicher Schritt für EC2:TCP-Port 3306 in Ihren Sicherheitsgruppen zulassen.
Wenn es sich um einen EC2-Server handelt, müssen Sie auch Port 3306 in den Sicherheitsgruppen Ihres Servers zulassen.
Konfigurieren Sie Ihre App(s) für die Verwendung des Remote-Hosts.
Nachdem Sie den Remote-MySQL-Server eingerichtet haben, sollten Sie Ihre App(s) so konfigurieren, dass sie diesen Host für Datenbanktransaktionen verwenden. Dies wird normalerweise in der Konfigurationsdatei der App eingerichtet, und wir verwenden WordPress als unser Beispiel.
Öffne die wp-config.php-Datei der App.
In dieser Zeile:
define('DB_HOST', 'localhost');
Ändern Sie „localhost“ in die IP-Adresse oder den vollständigen Hostnamen Ihres Remote-MySQL-Servers. Die IP-Adresse ist in der Regel eine schnellere und zuverlässigere Wahl, da sie nicht auf die DNS-Auflösung angewiesen ist.
Speichern Sie die Datei und beenden Sie sie, und schon sind Sie fertig! Sie können Ihre App jetzt testen, um sicherzustellen, dass sie ordnungsgemäß funktioniert.