Problem:
Clients können nicht zur MySQL Datenbank verbinden.
Lösung:
Oft ist die MySQL Datenbank nur für den lokalen Zugriff konfiguriert.
Die Lösung ist zweigeteilt:
Teil 1:
Es gibt zwei verschiedene Vorgehensweisen. Beide werden in der "my.cnf" in der Sektion [mysqld] konfiguriert.
#SkipNetworking
bind-address 127.0.0.1 # nur localhost
bind-address 192.168.0.100 # nur über die locale IP
# (sinnvoll innerhalb einer DMZ)
Sollte die "my.cnf" verändert worden sein, so muss auch der MySQL-Daemon davon in Kenntnis gesetzt werden:
/etc/init.d/mysql reload
Testen Sie, ob der Zugriff von Extern funktioniert. Tippen Sie dazu in eine DOS-Box oder in einen beliebig anderen externen Server folgendes ein:
"telnet meine-domain.tld 3306"
Sollte ein Verbinden fehlschlagen, so existieren weitere Störfaktoren (z.B. Firewall, Router, etc.). Bei Erfolg kommen die Versionsnummer und eine Zeichenabfolge. Drücken Sie dann mehrmals die Enter-Taste und Sie sind wieder auf der Eingabeconsole.
Teil 2:
Nun müssen die User dafür frei geschaltet werden. Anwender von Confixx oder Plesk können dies in der Admin-Oberfläche erledigen. Per Hand sieht es (anhand des Beispiel-DB-Users 'huschi') so aus:
#In der Shell/Putty:
mysql -uroot -p mysql
#root-Passwort eingeben
#nun sind wir im MySQL-Client, der nur noch SQL-Befehle versteht:
update user set host='%' where user='huschi';
update db set host='%' where user='huschi';
exit;
Dies kann man natürlich auch per phpMyAdmin erledigen.
Wichtig zu wissen: Die Tabelle "mysql.user" ist zuständig für die allgemeinen Benutzerrechte.
"mysql.db" regelt den Zugriff auf spezielle Datenbanken.