MySQL server is not reachable


Lei è qui: InLoox Supporto Documentazione Support Articles InLoox 5.x / 6.x Troubleshooter Database management systems MySQL server is not reachable

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:

  1. Öffnen von MySQL für externen Zugriff
  2. User-Berechtigungen so setzten, dass MySQL auch deren externe Logins annimmt

Teil 1:

Es gibt zwei verschiedene Vorgehensweisen. Beide werden in der "my.cnf" in der Sektion [mysqld] konfiguriert.

  • Bei älteren MySQL-Versionen ist das Problem auf den Parameter SkipNetworking zurückzuführen. Wenn dieser aktiviert ist, lauscht MySQL lediglich an den localen Sockets. Also müssen diese folgendermaßen auskommentiert werden:

#SkipNetworking
 

  • Neuere Versionen bringen den Parameter bind-address mit. Damit kann man eine IP angeben, an der gelauscht wird, oder man kann den Parameter deaktivieren. Wählen Sie also eine der folgenden Einstellungen:

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.