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:
- bind-adress auf IP-Adresse des Servers setzen
- 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.