Website-Suche

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

  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.

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.

  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 über die Remote-IP-Adresse 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';
    
  3. 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.

Verwandte Artikel: