Android

So lassen Sie Remoteverbindungen zum mysql-Datenbankserver zu

Web Applications on AWS: Connecting to the Server

Web Applications on AWS: Connecting to the Server

Inhaltsverzeichnis:

Anonim

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

mysqld.cnf

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:

sudo systemctl restart mysqld

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:

  1. 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.
MySQL Mariadb