Web Applications on AWS: Connecting to the Server
Inhaltsverzeichnis:
- MySQL Server konfigurieren
- Gewähren eines Benutzerzugriffs von einem Remotecomputer aus
- Firewall konfigurieren
- Iptables
- UFW
- FirewallD
- Überprüfen der Änderungen
- Fazit
Standardmäßig wartet der MySQL-Server nur auf Verbindungen von localhost, sodass nur auf Anwendungen zugegriffen werden kann, die auf demselben Host ausgeführt werden.
In einigen Situationen ist es jedoch erforderlich, vom Remotestandort aus auf den MySQL-Server zuzugreifen. Zum Beispiel, wenn Sie von Ihrem lokalen System aus eine Verbindung zum Remote-MySQL-Server herstellen möchten oder wenn Sie eine Implementierung mit mehreren Servern verwenden, bei der die Anwendung auf einem anderen Computer als dem Datenbankserver ausgeführt wird. Eine Möglichkeit wäre, über den SSH-Tunnel auf den MySQL-Server zuzugreifen, und eine andere, den MySQL-Server so zu konfigurieren, dass er Remoteverbindungen akzeptiert.
In diesem Handbuch werden die Schritte beschrieben, die erforderlich sind, um Remoteverbindungen zu einem MySQL-Server zuzulassen. Die gleichen Anweisungen gelten für MariaDB.
MySQL Server konfigurieren
Der erste Schritt besteht darin, den MySQL-Server so einzurichten, dass er eine bestimmte IP-Adresse oder alle IP-Adressen auf dem Computer überwacht.
Wenn der MySQL-Server und die Clients über ein privates Netzwerk miteinander kommunizieren können, empfiehlt es sich, den MySQL-Server so einzustellen, dass er nur die private IP überwacht. Wenn Sie sich andernfalls über ein öffentliches Netzwerk mit dem Server verbinden möchten, stellen Sie den MySQL-Server so ein, dass er alle IP-Adressen auf dem Computer überwacht.
Dazu müssen Sie die MySQL-Konfigurationsdatei bearbeiten und den Wert der Option
bind-address
hinzufügen oder ändern. Sie können eine einzelne IP-Adresse und einen einzelnen IP-Bereich festlegen. Wenn die Adresse
0.0.0.0
lautet, akzeptiert der MySQL-Server Verbindungen auf allen Host-IPv4-Schnittstellen. Wenn Sie IPv6 auf Ihrem System konfiguriert haben, verwenden Sie statt
0.0.0.0
::
.
Der Speicherort der MySQL-Konfigurationsdatei hängt von der Verteilung ab. In Ubuntu und Debian befindet sich die Datei unter
/etc/mysql/mysql.conf.d/mysqld.cnf
, während sie sich in Red Hat-basierten Distributionen wie CentOS unter
/etc/my.cnf
.
Öffnen Sie die Datei mit Ihrem Texteditor:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Suchen Sie nach einer Zeile, die mit
bind-address
beginnt
bind-address
und setzen Sie ihren Wert auf die IP-Adresse, die ein MySQL-Server überwachen soll.
Standardmäßig ist der Wert auf
127.0.0.1
(hört nur in localhost).
In diesem Beispiel wird festgelegt, dass der MySQL-Server alle IPv4-Schnittstellen überwacht, indem der Wert auf
0.0.0.0
bind-address = 0.0.0.0 # skip-networking
Wenn es eine Zeile mit
skip-networking
, löschen Sie sie oder kommentieren Sie sie aus, indem Sie am Zeilenanfang ein
#
einfügen.
In MySQL 8.0 und höher ist die Anweisung
bind-address
möglicherweise nicht vorhanden. In diesem Fall fügen Sie es unter dem
Sektion.
Starten Sie anschließend den MySQL-Dienst neu, damit die Änderungen wirksam werden. Nur Root-Benutzer oder Benutzer mit sudo-Berechtigungen können Dienste neu starten.
Um den MySQL-Dienst unter Debian oder Ubuntu neu zu starten, geben Sie Folgendes ein:
sudo systemctl restart mysql
Auf RedHat-basierten Distributionen wie CentOS wird der Dienst neu gestartet:
Gewähren eines Benutzerzugriffs von einem Remotecomputer aus
Der nächste Schritt besteht darin, dem Remotebenutzer den Zugriff auf die Datenbank zu ermöglichen.
Melden Sie sich als Root-Benutzer beim MySQL-Server an, indem Sie Folgendes eingeben:
sudo mysql
mysql -uroot -p
Verwenden Sie in der MySQL-Shell die Anweisung
GRANT
, um dem
GRANT
Zugriff zu gewähren.
GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';
Wo:
-
database_name
ist der Name der Datenbank, mit der der Benutzer eine Verbindung herstellt.user_name
ist der Name des MySQL-Benutzers. IP-Adresse ist die IP-Adresse, von der aus der Benutzer eine Verbindung herstellt. Mit%
der Benutzer eine Verbindung von einer beliebigen IP-Adresse aus herstellen.user_password
ist das Benutzerpasswort.
Um beispielsweise einem Benutzer mit dem Namen
foo
mit dem Kennwort
my_passwd
von einem Clientcomputer mit der IP-
10.8.0.5
my_passwd
aus Zugriff auf einen Datenbank-
dbname
zu
10.8.0.5
, führen Sie
my_passwd
aus:
GRANT ALL ON dbname.* TO foo@'10.8.0.5' IDENTIFIED BY 'my_passwd';
Firewall konfigurieren
Im letzten Schritt konfigurieren Sie Ihre Firewall so, dass der Datenverkehr auf Port
3306
(MySQL-Standardport) von den Remotecomputern zugelassen wird.
Iptables
sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT
Zugriff von einer bestimmten IP-Adresse zulassen:
sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT
UFW
UFW ist das Standard-Firewall-Tool in Ubuntu. Gehen Sie wie folgt vor, um den Zugriff von einer beliebigen (sehr unsicheren) IP-Adresse im Internet aus zuzulassen:
sudo ufw allow 3306/tcp
Zugriff von einer bestimmten IP-Adresse zulassen:
sudo ufw allow from 10.8.0.5 to any port 3306
FirewallD
FirewallD ist das Standard-Firewall-Management-Tool in CentOS. So erlauben Sie den Zugriff von einer beliebigen (sehr unsicheren) IP-Adresse im Internet:
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
sudo firewall-cmd --reload
Um den Zugriff von einer bestimmten IP-Adresse auf einen bestimmten Port zuzulassen, können Sie entweder eine neue FirewallD-Zone erstellen oder eine Rich-Regel verwenden. Nun erstelle eine neue Zone namens
mysqlzone
:
sudo firewall-cmd --new-zone=mysqlzone --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --new-zone=mysqlzone --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --zone=mysqlzone --add-source=10.8.0.5/32
sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp
sudo firewall-cmd --reload
Überprüfen der Änderungen
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der Remote-Benutzer eine Verbindung zum MySQL-Server herstellen kann:
mysql -u user_name -h mysql_server_ip -p
Dabei ist Benutzername der Name des Benutzers, auf den Sie Zugriff gewährt haben, und
mysql_server_ip
die IP-Adresse des Hosts, auf dem der MySQL-Server ausgeführt wird.
Wenn alles korrekt eingerichtet ist, können Sie sich beim Remote-MySQL-Server anmelden.
ERROR 2003 (HY000): Can't connect to MySQL server on '10.8.0.5' (111)"
Der folgende Fehler weist darauf hin, dass der Benutzer, den Sie anmelden möchten, keine Zugriffsberechtigung für den Remote-MySQL-Server hat.
"ERROR 1130 (HY000): Host '10.8.0.5' is not allowed to connect to this MySQL server"
Fazit
MySQL, standardmäßig der beliebteste Open-Source-Datenbankserver, wartet auf eingehende Verbindungen nur auf localhost.
Um Remoteverbindungen zu einem MySQL-Server zuzulassen, müssen Sie die folgenden Schritte ausführen:
- Konfigurieren Sie den MySQL-Server so, dass er alle oder eine bestimmte Schnittstelle überwacht. Gewähren Sie dem Remote-Benutzer Zugriff. Öffnen Sie den MySQL-Port in Ihrer Firewall.
Ertrinken in Aufgaben? Lassen Sie Alive Organizer PIM Werfen Sie einen Life Preserver
ÜBernimm die Kontrolle über Ihr Leben mit Alive Organizer, einem persönlichen Informationsmanager und Scheduler.
Verwenden der Remotedesktop-App in Windows 8 für Remoteverbindungen
Erfahren Sie, wie Sie die Remotedesktop-App in Windows 8 für Remoteverbindungen einrichten und verwenden.
Lassen Sie sich neue Geschenkideen einfallen, arbeiten Sie mit Freunden zusammen, indem Sie einfache…
Wie man neue Geschenkideen findet und mit Freunden zusammenarbeitet, um mit Simple Present die richtigen Geschenke zu finden.