Hi!
Erstmal musst du dem MySQL-Server sagen, dass dieser sich beim Socket nur an localhost (127.0.0.1) bindet.
Dies geht in der serverseitigen my.cnf. (/etc/my.cnf oder /usr/local/etc/my.cnf)
In der [mysqld] Sektion diese Zeile hinzufügen:
Code:
bind-address = 127.0.0.1
*service mysql-server restart* nicht vergessen!
Nun ist der Server nur noch über die Adresse 127.0.0.1 erreichbar, welche natürlich nur lokal korrekt gerouted wird. Die MySQL-User Tabelle brauchst du dabei nicht anzupassen, da der Server keine eingehenden Verbindungen von ausserhalb empfangen kann. (in einigen Fällen solltest du trotzdem die Host-Spalten auf 127.0.0.1 setzen, falls du einen Fehler beim Verbinden kriegst)
Falls du Navicat für dein Datenbankmanagement verwendest, kannst du dies in der SSH-Spalte bei den Verbindungsinformationen einstellen. Wichtig ist, dass du beim MySQL-Host nun 127.0.0.1 anstelle der normalen IP-Adresse angibst. Die SSH-Daten sollten die selben wie bei z.B. PuTTY sein, falls du dies nicht anders handhabst.
Der MySQL-Server kann nicht explizit nur getunnelte Verbindungen akzeptieren, da er nicht weiß ob eine Verbindung getunnelt wird. Hierfür ist der SSH-Daemon zuständig. Wenn du den MySQL-Server jedoch an localhost bindest, werden keine Pakete von ausserhalb an den MySQL-Server weitergereicht - daher der selbe Effekt.