Website-Suche

MySQL: Zugriff von einer bestimmten IP-Adresse zulassen


Wenn Sie den Remotezugriff auf Ihren MySQL-Server zulassen müssen, empfiehlt es sich, den Zugriff nur von einer oder mehreren bestimmten IP-Adressen aus zuzulassen. Auf diese Weise setzen Sie nicht unnötig einen Angriffsvektor für das gesamte Internet aus.

In diesem Tutorial führen wir Sie Schritt für Schritt durch die Anleitung, um Remote-Verbindungen zu einem MySQL-Server von einer bestimmten IP-Adresse auf einem Linux-System aus 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 von einer bestimmten IP aus
  • So erstellen oder ändern Sie einen MySQL-Benutzer, um Remote-Verbindungen von einer bestimmten IP zuzulassen

MySQL: Erlauben Sie den Zugriff von einer bestimmten IP-Adresse Schritt für Schritt Anleitung

Standardmäßig ist der MySQL-Dienst so konfiguriert, dass er nur Verbindungen akzeptiert, die vom selben Computer kommen. Mit anderen Worten, die Bindungsadresse wird auf die lokale Loopback-Adresse 127.0.0.1 festgelegt. Bevor wir Verbindungen von einer anderen IP-Adresse akzeptieren können, müssen wir diese Einstellung in der MySQL-Konfigurationsdatei ändern.

Daher ist das Zulassen von Remote-Verbindungen zu Ihrer MySQL-Datenbank von einer bestimmten IP-Adresse aus 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 läuft MySQL auf Port 3306, so dass Verbindungen zu diesem Port zugelassen werden müssen, und es ist kein Problem, nur diese Verbindungen von den von uns angegebenen IP-Adressen zuzulassen.

Drittens müssen wir einen neuen Benutzer erstellen oder einen bestehenden bearbeiten, um ihn von einer bestimmten IP-Adresse aus zugänglich zu machen.

Konfigurieren der MySQL-Bindungsadresse

  1. 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.cnf
    
  2. Suchen Sie die Einstellung mit der Aufschrift bind-address unter dem Abschnitt [mysqld]. Standardmäßig sollte dies derzeit auf die Loopback-Adresse 127.0.0.1 konfiguriert sein. Löschen Sie diese Adresse und setzen Sie die öffentliche IP-Adresse Ihres Servers an ihre Stelle. Wir werden nur 10.1.1.1 für das Beispiel verwenden.

    
    [mysqld]
    bind-address = 10.1.1.1
    

    Wenn Sie möchten, können Sie stattdessen 0.0.0.0 als 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.0
    
  3. Nachdem 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 mysql
    

    In einigen Distributionen kann der Dienst stattdessen mysqld heiß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.

In den folgenden Beispielen erlauben wir den Fernzugriff von der IP-Adresse 10.150.1.1. Geben Sie einfach Ihre eigene IP-Adresse an dieser Stelle ab, für die Sie den Fernzugriff zulassen möchten.

Auf Ubuntu-Systemen und anderen, die ufw (unkomplizierte Firewall) verwenden:


sudo ufw allow from 10.150.1.1 to any port 3306

Auf Red Hat, CentOS, Fedora und abgeleiteten Systemen, die firewalld verwenden:


sudo firewall-cmd --zone=public --add-source=10.150.1.1 --permanent
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 -s 10.150.1.1 --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

Zulassen von Remoteverbindungen zu einem bestimmten Benutzer von einer bestimmten IP aus

Jetzt, da der MySQL-Dienst eingehende Verbindungen akzeptieren kann und unsere Firewall eine bestimmte IP durchlässt, müssen wir unseren Benutzer nur noch so konfigurieren, dass er Remote-Verbindungen von dieser IP akzeptiert.

  1. Beginnen Sie damit, MySQL mit dem root-Konto zu öffnen.

    
    sudo mysql
    

    In einigen Konfigurationen müssen Sie möglicherweise den folgenden Befehl eingeben und Ihr Root-Kennwort angeben:

    
    mysql -u root -p
    
  2. Wenn Sie bereits einen Benutzer erstellt haben und diesen Benutzer so konfigurieren müssen, dass er von einer Remote-IP-Adresse aus erreichbar ist, können wir den Befehl MySQL RENAME USER verwenden. Wir werden unseren linuxconfig-Benutzer im untenstehenden Beispielbefehl von der IP-Adresse 10.150.1.1 aus 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';
    

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 verwenden, um von der von Ihnen angegebenen IP-Adresse aus remote auf die Datenbank zuzugreifen.

Abschließende Gedanken

In diesem Tutorial haben wir gesehen, wie man Remote-Verbindungen zum MySQL-Dienst von einer bestimmten IP auf einem Linux-System zulässt. Dabei handelte es sich um einen dreiteiligen Prozess, bei dem der Dienst zugänglich gemacht wurde, Verbindungen von der spezifischen IP 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.

Verwandte Artikel: