MySQL-Verbindungen von außerhalb erlauben

In einer sicheren MySQL-Umgebung dürfen Zugriffe auf die Datenbank nur vom eigenen Host (localhost) des MySQL-Services ausgeführt werden. Zugriffe von außerhalb (remote) werden nicht akzeptiert, um die Sicherheit zu erhöhen. In einer Produktionsumgebung ist dieser erhöhte Sicherheitsaspekt sehr wünschenswert, während der Entwicklungsphase kann der eingeschränkte Zugriff aber sehr schnell zum „Showstopper“ werden. Besonders dann, wenn man das Hosting der MySQL-Datenbank auf einem Testserver betreibt und vom eigenen Laptop aus über ein Tool wie beispielsweise der MySQL Workbench 6.0 darauf zugreifen möchte.

Ich möchte zeigen, wie man entgegen der Sicherheitsempfehlung, trotzdem von einem entfernten Rechner mit einem MySQL Client auf eine MySQL-Datenbank zugreifen kann. Als Beispiel dient eine MySQL-Installation unter Ubuntu.

1. Remote-Verbindungen zulassen

In der Konfigurationsdatei von MySQL /etc/mysql/my.cnf sorgt ein Eintrag dafür, dass nur lokale Verbindungen zugelassen werden. Wird versucht von einer anderen IP auf die MySQL-Datenbank zuzugreifen, dann erscheint die Fehlermeldung: „Your connection attempt failed for user ‚root‘ from your host to server“.

Möchte man jeden beliebigen Host zulassen, so muss man den blockierenden Befehl auskommentieren:

# bind-address = 127.0.0.1

Damit die gezeigte Auskommentierung aktiv wird, muss der MySQL-Daemon neugestartet werden:

service mysql restart

2. Restriktionen der Tabellen aufheben

Zusätzlich, zur Sicherheitsrichtlinie der MySQL-Konfigurationsdatei, sorgen Einstellungen der MySQL-Tabellen dafür, dass Verbindungen von anderen Hosts blockiert werden. Ob diese Einstellung aktiv ist, bemerkt man an der Serverrückmeldung: „Access denied for user ‚root’@’host‘ (using password: YES)“.

access_denied

Beim Anlegen einer Datenbanktabelle wird festgelegt, welcher Nutzer von welchem Host aus zugreifen darf. Möchte man jeden Host zulassen, so muss explizit die Wildcard „%“ zusammen mit dem Benutzernamen angegeben werden.

Die nachfolgenden Befehle zeigen, wie man sich im Terminal als MySQL-Benutzer „root“ anmeldet und für den Benutzer „root“ auf allen Datenbanken den Zugriff von jedem Host aus gewährt:

mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
quit

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.