Debian – MySQL externen Zugriff konfigurieren

Unter Debian den externen Zugriff auf MySQL konfigurieren ist recht einfach, aber da ich es immer wieder vergesse ;-) schreib ich es einfach mal auf.

1. MySQL extern erlauben

Die MySQL-Konfiguration my.cnf öffnen

debian: nano /etc/mysql/my.cnf

Unter alten Versionen von Debian Linux einfach SkipNetworking auskommentieren

#SkipNetworking

Bei aktuellen Versionen muss bind-address auskommentiert werden

#bind-address            = 127.0.0.1

oder ihr setzt den Wert auf der Server-IP-Adresse. In meinem Beispiel wäre das 192.168.1.20

Nun wird Strg+o plus Return gespeichert und Nano mit Strg+x geschlossen.

Nach einem Neustart von MySQL ist externe MySQL-Zugriff erlaubt!

debian: /etc/init.d/mysql restart

Kleiner Test von MySQL

Auch lokal lässt sich der Zugriff testen. Auf

telnet localhost 3306

sollte auch keine Fehlermeldung kommen, wenn der externe MySQL-Zugriff nicht erlaubt ist. Wenn man aber die eigene Domain oder IP-Adresse zum testen nutzt

telnet 192.168.1.20 3306

dann zeigt sich, ob der Debian Server extern MySQL erlaubt.

2. Benutzer-Berechtigungen

Root darf eh alles, aber normale MySQL-Benutzer brauchen die Berechtigung für den externen Zugriff. Update 2012/07: In neueren Versionen darf Root auch nicht auf den Server zugreifen. Hier eine kleine aber nicht sichere, sondern nur eine Lösung für Testumgebungen:

MySQL-Server Konsole:
update user set host=’%‘ where user=’root‘;
MySQL-Server: flush privileges;
exit;

Und setzt hinterher zumindest für MySQL ein neues Root-Passwort:

mysqladmin –user=root –password=<altes_pw> password <neues_pw>

Ok, auf die Schnelle einen MySQl-Benutzer anlegen.

Login

debian: mysql -p

In mysql direkt SQL-Befehle rein. Benutzer anlegen.

mysql > CREATE USER ‚Benutzer1’@’192.168.1.20‘ IDENTIFIED BY ‚Passwort‘;

MySQL-Datenbank anlegen:

mysql > create database meineDB;

Nun noch die externe Zugangsberechtigung für Nutzer und Datenbank konfigurieren.

mysql > GRANT ALL ON meineDB.* TO Benutzer1@’192.168.1.20′ IDENTIFIED BY ‚Passwort‘;

Anmerkung: Wenn der Benutzer noch kein Passwort hat, wie in meinem Fall dann schreibt nichts zwischen die Anführungszeichen.

Nun ein

mysql > flush privileges;

und raus aus MySQL

mysql > exit

So nun sollte der externe Zugriff auf den MySQL-Server fertig konfiguriert sein.