MySQL: Remote-Verbindungen zulassen
Nach der Installation eines MySQL-Servers auf einem Linux-System akzeptiert er standardmäßig nur eingehende Verbindungen von sich selbst (d.h. die Loopback-Adresse 127.0.0.1).
Diese Standardkonfiguration funktioniert einwandfrei, wenn Sie nur versuchen, Informationen aus der Datenbank auf demselben Server zu lesen oder zu schreiben. Benutzer, die ihre Website und ihren MySQL-Server auf derselben Box hosten, müssen also keine zusätzliche Konfiguration vornehmen, um Remote-Verbindungen zuzulassen.
Wenn Sie Remote-Verbindungen zu Ihrem MySQL-Server zulassen möchten, weil Sie andere Computer und/oder Benutzer haben, die auf diese Daten zugreifen müssen, müssen Sie den MySQL-Dienst an eine öffentliche IP-Adresse auf Ihrem Server binden und möglicherweise eingehende MySQL-Verbindungen durch Ihre System-Firewall zulassen.
In diesem Tutorial führen wir Sie Schritt für Schritt durch die Anleitung, um Remote-Verbindungen zu einem MySQL-Server auf einem Linux-System zuzulassen. Diese Anweisungen sollten unabhängig davon funktionieren, welche Linux-Distribution Sie verwenden.
In diesem Tutorial lernen Sie:
- So erlauben Sie Remote-Verbindungen zum MySQL-Server
- So erlauben Sie Remote-Verbindungen zu MySQL durch die System-Firewall
- So erstellen oder ändern Sie einen MySQL-Benutzer, um Remote-Verbindungen zuzulassen
MySQL: Schritt-für-Schritt-Anleitung für Remote-Verbindungen zulassen
Das Zulassen von Remote-Verbindungen zu Ihrer MySQL-Datenbank ist ein dreistufiger Prozess.
Zuerst müssen wir den MySQL-Dienst so einrichten, dass er von entfernten Rechnern aus zugänglich ist, indem wir eine öffentliche Bind-Adresse in der MySQL-Konfigurationsdatei konfigurieren.
Zweitens müssen wir den Fernzugriff über unsere System-Firewall zulassen. Standardmäßig wird MySQL auf Port 3306 ausgeführt, sodass Verbindungen zu diesem Port zugelassen werden müssen.
Drittens müssen wir einen neuen Benutzer erstellen oder einen vorhandenen bearbeiten, um ihn von Remote-IP-Adressen aus zugänglich zu machen. Wir können wählen, ob wir alle IP-Adressen oder nur bestimmte IP-Adressen zulassen möchten.
Konfigurieren der MySQL-Bindungsadresse
Wir beginnen mit dem Öffnen der Datei
/etc/mysql/mysql.cnf. Öffnen Sie dies mit Root-Berechtigungen in nano oder Ihrem bevorzugten Texteditor.sudo nano /etc/mysql/mysql.cnfSuchen Sie die Einstellung mit der Aufschrift
bind-addressunter dem Abschnitt[mysqld].Standardmäßig sollte dies derzeit auf die Loopback-Adresse127.0.0.1konfiguriert sein. Löschen Sie diese Adresse und setzen Sie die öffentliche IP-Adresse Ihres Servers an ihre Stelle. Wir werden nur10.1.1.1für das Beispiel verwenden.[mysqld] bind-address = 10.1.1.1Wenn Sie möchten, können Sie stattdessen
0.0.0.0als Bindungsadresse verwenden, bei der es sich um einen Platzhalter handelt, der den Dienst an alle erreichbaren Schnittstellen binden sollte. Dies wird nicht empfohlen, kann aber für die Fehlerbehebung nützlich sein, wenn Sie später auf Probleme stoßen.[mysqld] bind-address = 0.0.0.0Nachdem Sie diese Änderung vorgenommen haben, speichern Sie Ihre Änderungen in der Datei, und beenden Sie sie. Anschließend müssen Sie den MySQL-Dienst neu starten, damit die Änderungen wirksam werden.
sudo systemctl restart mysqlIn einigen Distributionen kann der Dienst stattdessen
mysqldheißen:sudo systemctl restart mysqld
Remote-Zugriff über Firewall zulassen
Angenommen, Sie verwenden Port 3306 für Ihren MySQL-Server, müssen wir dies durch die System-Firewall zulassen. Der Befehl, den Sie ausführen müssen, hängt von der Distribution ab, die Sie verwenden. Beziehen Sie sich auf die untenstehende Liste oder passen Sie den Befehl nach Bedarf an, um die Firewall-Syntax Ihres eigenen Systems einzuhalten.
Auf Ubuntu-Systemen und anderen, die ufw (unkomplizierte Firewall) verwenden:
sudo ufw allow mysql
Auf Red Hat, CentOS, Fedora und abgeleiteten Systemen, die firewalld verwenden:
sudo firewall-cmd --zone=public --add-service=mysql --permanent
sudo firewall-cmd --reload
Und der gute alte iptables-Befehl, der auf jedem System funktionieren sollte:
sudo iptables -A INPUT -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
Zulassen von Remoteverbindungen zu einem bestimmten Benutzer
Jetzt, da der MySQL-Dienst eingehende Verbindungen akzeptieren kann und unsere Firewall sie durchlässt, müssen wir nur noch unseren Benutzer so konfigurieren, dass er Remote-Verbindungen akzeptiert.
Beginnen Sie damit, MySQL mit dem root-Konto zu öffnen.
sudo mysqlIn einigen Konfigurationen müssen Sie möglicherweise den folgenden Befehl eingeben und Ihr Root-Kennwort angeben:
mysql -u root -pWenn Sie bereits einen Benutzer erstellt haben und diesen Benutzer so konfigurieren müssen, dass er über die Remote-IP-Adresse erreichbar ist, können wir den Befehl MySQL
RENAME USERverwenden. Wir werden unserenlinuxconfig-Benutzerim untenstehenden Beispielbefehl von der IP-Adresse10.150.1.1aus erreichbar machen, dies aber bei Bedarf für Ihre eigene Konfiguration anpassen.mysql> RENAME USER 'linuxconfig'@'localhost' TO 'linuxconfig'@'10.150.1.1';Wenn Sie diesen Benutzer zum ersten Mal erstellen, verwenden wir den Befehl
CREATE USER. Stellen Sie sicher, dass Sie den folgenden Benutzernamen, die folgende IP-Adresse und das folgende Passwort durch Ihre eigenen ersetzen.mysql> CREATE USER 'linuxconfig'@'10.150.1.1' IDENTIFIED BY 'password_here';Wenn Sie möchten, dass Ihr Benutzer von JEDER IP-Adresse aus erreichbar ist, können Sie
%in Ihrem Befehl anstelle einer bestimmten IP-Adresse verwenden. So bearbeiten Sie den vorhandenen Benutzer, damit er von jeder IP-Adresse aus erreichbar ist:mysql> RENAME USER 'linuxconfig'@'localhost' TO 'linuxconfig'@'%';Und hier erfahren Sie, wie Sie einen neuen Benutzer erstellen, auf den von jeder IP-Adresse aus zugegriffen werden kann:
mysql> CREATE USER 'linuxconfig'@'%' IDENTIFIED BY 'password_here';
Das ist alles, was dazu gehört. Nachdem Sie Ihrem Benutzer Zugriff auf eine oder mehrere Datenbanken gewährt haben, können Sie die Kontoanmeldeinformationen für den Remotezugriff auf die Datenbank verwenden.
Abschließende Gedanken
In diesem Tutorial haben wir gesehen, wie Sie Remote-Verbindungen zum MySQL-Dienst auf einem Linux-System zulassen können. Dabei handelte es sich um einen dreiteiligen Prozess, bei dem der Dienst zugänglich gemacht wurde, Verbindungen durch die Firewall zugelassen und ein MySQL-Konto zugänglich gemacht wurde. Da MySQL im Grunde über alle Distributionen hinweg gleich funktioniert, sollten diese Schritte für jeden nutzbar sein.
