Einführung
Es ist nicht ungewöhnlich, Datenbanken und Webserver auf demselben lokalen Computer zu hosten. Viele Unternehmen wechseln jedoch jetzt zu einer stärker verteilten Umgebung.
Ein separater Datenbankserver kann die Sicherheit und Hardwareleistung verbessern und es Ihnen ermöglichen, Ressourcen schnell zu skalieren. In solchen Anwendungsfällen ist das Erlernen der effektiven Verwaltung von Remote-Ressourcen eine Priorität.
Dieses Tutorial zeigt Ihnen, wie Sie Remote-Verbindungen zu einer MySQL-Datenbank aktivieren.
Voraussetzungen
- Zugriff auf ein Terminalfenster/eine Befehlszeile
- Remote-MySQL-Server
- Sudo oder root Privilegien auf lokalen und entfernten Rechnern
MySQL Server-Remoteverbindung
Das Zulassen von Verbindungen zu einem Remote-MySQL-Server wird in 3 Schritten eingerichtet:
- MySQL-Konfigurationsdatei bearbeiten
- Firewall konfigurieren
- Mit Remote-MySQL-Server verbinden
Schritt 1:MySQL-Konfigurationsdatei bearbeiten
1.1 Zugriff auf mysqld.cnf-Datei
Verwenden Sie Ihren bevorzugten Texteditor, um mysqld.cnf zu öffnen Datei. Dieses Beispiel verwendet den Nano-Texteditor in Ubuntu 18.04. Geben Sie den folgenden Befehl in Ihre Befehlszeilenschnittstelle ein, um auf die Konfigurationsdatei des MySQL-Servers zuzugreifen:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Der Speicherort der Datei kann je nach verwendeter Distribution und Version variieren. Wenn die MySQL-Konfigurationsdatei nicht ihr Standardspeicherort ist, versuchen Sie es mit Linux find
Befehl, um es zu erkennen.
1.2 Bindungsadresse IP ändern
Sie haben jetzt Zugriff auf die Konfigurationsdatei des MySQL-Servers. Scrollen Sie nach unten zur Bind-Adresse Zeile und ändern Sie die IP-Adresse. Die aktuelle Standard-IP ist auf 127.0.0.1 eingestellt. Diese IP beschränkt MySQL-Verbindungen auf den lokalen Rechner.
Die neue IP sollte mit der Adresse des Computers übereinstimmen, der remote auf den MySQL-Server zugreifen muss. Wenn Sie beispielsweise MySQL an 0.0.0.0 binden, kann sich jede Maschine, die den MySQL-Server erreicht, auch damit verbinden.
Nachdem Sie die erforderlichen Änderungen vorgenommen haben, speichern und beenden Sie die Konfigurationsdatei.
1.3 Starten Sie den MySQL-Dienst neu
Wenden Sie die an der MySQL-Konfigurationsdatei vorgenommenen Änderungen an, indem Sie den MySQL-Dienst neu starten:
sudo systemctl restart mysql
Als Nächstes müssen Ihre aktuellen Firewall-Einstellungen angepasst werden, um Datenverkehr zum Standard-MySQL-Port zuzulassen.
Schritt 2:Richten Sie die Firewall ein, um Remote-MySQL-Verbindungen zuzulassen
Beim Bearbeiten der Konfigurationsdatei haben Sie wahrscheinlich festgestellt, dass der MySQL-Standardport 3306 ist .
Wenn Sie bereits eine Firewall auf Ihrem MySQL-Server konfiguriert haben, müssen Sie Datenverkehr für diesen spezifischen Port öffnen. Folgen Sie den Anweisungen unten, die Ihrem verwendeten Firewall-Dienst entsprechen.
Option 1:UFW (unkomplizierte Firewall)
UFW ist das Standard-Firewall-Tool in Ubuntu. Geben Sie in einem Terminalfenster den folgenden Befehl ein, um Datenverkehr zuzulassen und die IP und den Port abzugleichen:
sudo ufw allow from remote_ip_address to any port 3306
Das System bestätigt, dass die Regeln erfolgreich aktualisiert wurden.
Option 2:FirewallD
Das Verwaltungstool firewalld in CentOS verwendet Zonen festzulegen, welcher Datenverkehr zugelassen werden soll.
Erstellen Sie eine neue Zone, um die Regeln für den Datenverkehr des MySQL-Servers festzulegen. Der Name der Zone in unserem Beispiel ist mysqlrule , und wir haben die IP-Adresse aus unserem vorherigen Beispiel 133.155.44.103 verwendet :
sudo firewall-cmd --new-zone=mysqlrule --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --zone=mysqlrule --add-source=133.155.44.103
sudo firewall-cmd --permanent --zone=mysqlrule --add-port=3306/tcp
sudo firewall-cmd --reload
Sie haben Port 3306 auf Ihrer Firewall erfolgreich geöffnet.
Option 3:Öffnen Sie Port 3306 mit iptables
Die iptables Dienstprogramm ist standardmäßig auf den meisten Linux-Distributionen verfügbar. Geben Sie den folgenden Befehl ein, um MySQL-Port 3306 für uneingeschränkten Datenverkehr zu öffnen:
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
Verwenden Sie stattdessen den folgenden Befehl, um den Zugriff auf eine bestimmte IP-Adresse zu beschränken:
sudo iptables -A INPUT -p tcp -s 133.155.44.103 --dport 3306 -j ACCEPT
Dieser Befehl gewährt Zugriff auf 133.155.44.103. Sie müssten es durch die IP für Ihre Remote-Verbindung ersetzen.
Es ist notwendig, die an den iptables-Regeln vorgenommenen Änderungen zu speichern. Geben Sie in einer Ubuntu-basierten Distribution die folgenden Befehle ein:
sudo netfilter-persistent save
sudo netfilter-persistent reload
Geben Sie den folgenden Befehl ein, um die neuen iptables-Regeln in CentOS zu speichern:
service iptables save
Schritt 3:Verbindung zum Remote-MySQL-Server herstellen
Ihr Remote-Server ist jetzt bereit, Verbindungen anzunehmen. Verwenden Sie den folgenden Befehl, um eine Verbindung mit Ihrem Remote-MySQL-Server herzustellen:
mysql -u username -h mysql_server_ip -p
Der -u username
im Befehl steht für Ihren MySQL-Benutzernamen. Die -h mysql_server_ip
ist die IP oder der Hostname Ihres MySQL-Servers. Das -p
Option fordert Sie auf, das Passwort für den MySQL-Benutzernamen einzugeben.
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
Connection to mysql_server_ip 3306 port [tcp/mysql] succeeded!
Wie gewährt man Fernzugriff auf eine neue MySQL-Datenbank?
Wenn Sie noch keine Datenbanken haben, können Sie ganz einfach eine Datenbank erstellen, indem Sie den folgenden Befehl in Ihre MySQL-Shell eingeben:
CREATE DATABASE ‘yourDB’;
So gewähren Sie entfernten Benutzern Zugriff auf eine bestimmte Datenbank:
GRANT ALL PRIVILEGES ON yourDB.* TO [email protected]’133.155.44.103’ IDENTIFIED BY ‘password1’;
Der Name der Datenbank, der Benutzername, die Remote-IP und das Passwort müssen mit den Informationen übereinstimmen, die Sie für die Remote-Verbindung verwenden möchten.
So gewähren Sie Fernzugriff auf eine vorhandene MySQL-Datenbank
Um einem Benutzer Fernzugriff auf eine vorhandene Datenbank zu gewähren, ist eine Reihe von zwei Befehlen erforderlich:
update db set Host=’133.155.44.103' where Db='yourDB';
update user set Host=’133.155.44.103' where user='user1';
Benutzer1 kann nun auf yourDB zugreifen von einem entfernten Standort, der durch die IP 133.155.44.103 identifiziert wird .