So ermöglichen Sie den Remotezugriff auf MySQL

Note

Viele Websites und Anwendungen beginnen mit einem Webserver und einem Datenbank-Backend, die auf demselben Computer gehostet werden. Mit der Zeit kann ein solches Setup jedoch umständlich und schwierig zu skalieren sein. Eine gängige Lösung besteht darin, diese Funktionen durch Einrichten einer entfernten Datenbank zu trennen, sodass Server und Datenbank auf ihren eigenen Computern in ihrem eigenen Tempo wachsen können.

Eines der häufigsten Probleme, auf das Benutzer beim Einrichten einer Remote-MySQL-Datenbank stoßen, ist, dass ihre MySQL-Instanz nur so konfiguriert ist, dass sie auf lokale Verbindungen wartet. Dies ist die Standardeinstellung von MySQL, funktioniert jedoch nicht für ein Remote-Datenbank-Setup, da MySQL in der Lage sein muss, auf die IP-Adresse vonexternalzu warten, unter der der Server erreichbar ist. Öffnen Sie dazu die Dateimysqld.cnf:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Navigieren Sie zu der Zeile, die mit der Direktivebind-addressbeginnt. Es wird so aussehen:

/etc/mysql/mysql.conf.d/mysqld.cnf

. . .
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 127.0.0.1
. . .

Standardmäßig ist dieser Wert auf127.0.0.1 festgelegt, was bedeutet, dass der Server nur nach lokalen Verbindungen sucht. Sie müssen diese Anweisung ändern, um auf eine externe IP-Adresse zu verweisen. Zur Fehlerbehebung können Sie diese Anweisung auf eine Platzhalter-IP-Adresse festlegen, entweder*,:: oder0.0.0.0:

/etc/mysql/mysql.conf.d/mysqld.cnf

. . .
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 0.0.0.0
. . .

[.Hinweis]##

Note: Wenn Sie MySQL 8+ ausführen, befindet sich die Direktivebind-addresstandardmäßig nicht in der Dateimysqld.cnf. Fügen Sie in diesem Fall die folgende hervorgehobene Zeile am Ende der Datei hinzu:

/etc/mysql/mysql.conf.d/mysqld.cnf

. . .
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log
bind-address            = 0.0.0.0

Speichern und schließen Sie die Datei, nachdem Sie diese Zeile geändert haben, und starten Sie den MySQL-Dienst neu:

sudo systemctl restart mysql

Versuchen Sie anschließend, von einem anderen Computer aus auf Ihre Datenbank zuzugreifen:

mysql -u user -h database_server_ip -p

Wenn Sie auf Ihre Datenbank zugreifen können, wird bestätigt, dass die Anweisungbind-addressin Ihrer Konfigurationsdatei das Problem war. Beachten Sie jedoch, dass die Einstellung vonbind-address auf0.0.0.0 unsicher ist, da Verbindungen von jeder IP-Adresse zu Ihrem Server möglich sind. Wenn Sie andererseits immer noch nicht remote auf die Datenbank zugreifen können, kann das Problem durch etwas anderes verursacht werden. In beiden Fällen kann es hilfreich sein, unserem Handbuch zuHow To Set Up a Remote Database to Optimize Site Performance with MySQL on Ubuntu 18.04 zu folgen, um eine sicherere Remote-Datenbankkonfiguration einzurichten.