Externer Zugriff auf mysql

Lokal auf dem Rechner kann man mit mysql -u <Username> -p auf seine Datenbank zu greifen. Das geht auch extern mit

mysql -h <IP-Adresse> -u <Username> -p

Jedoch muss man dafür erstmal mysql einrichten. Dazu sind zwei Schritte erforderlich:

  1. bind-adress auf IP-Adresse des Servers setzen
  2. Den User, der extern zugreifen soll, einrichten

1. adress_bind

bind-adress steht in der /etc/mysql/mariadb.conf.d/50-server.cnf steht in der Grundkonfiguration auf localhost bzw 127.0.0.1 und muss auf die IP-Adresse des Servers gesetzt werden. Zulässig ist aber auch 0.0.0.0.
Ob der Port 3306 für den mysql-Zugriff geöffnet ist, kann man mit nmap -p3306 <IP-adresse> testen.

2. User einrichten

Mir war bei der Arbeit mit mysql auf einem Server aufgefallen, dass man User in der Form ‚user’@’localhost‘ einrichtet. Will man aber mit dem oben angegebenen Befehl auf die Datenbank zugreifen, befindet man sich auf einem anderen Rechner im Netzwerk. Also muss der User <Username>@<IP-Adresse des externen Rechners> heißen. Das ist natürlich dumm, wenn man mit mehreren Rechnern und damit verschiedenen IP-Adressen arbeitet. Damit man dann nicht für jeden Rechner einen eigenen User einrichten muss, benutzt man die Wildcard ‚<Username>’@’%‘

Natürlich stellte sich mir die Frage, warum phpmyadmin denn mit localhost funktioniert? Wenn man sich mit phpmyadmin auf dem Serverrechner einlogt, dann führt phpmyadmin die mysql-Befehle als lokaler User auf dem Server aus.