chrisnbg
Goto Top

Probleme mit MySQL Remotezugriff

Wir müssen vom Firmen-Netzwerk aus via ODBC/Access usw. diverse Zugriffe auf unsere Webdatenbanken durchführen

Hi Kollegen,

ich kämpfe seit einigen Wochen schon mit einem - eigentlich ja nicht so dramatischen - Problem.

Kurz zum erklärten Ziel:
Direkter Zugriff auf die gesamte MySQL-Datenbank über Port 3306 auf unseren Dedizierten Windows Server von 1und1. Der Zugriff war/ist nur von unserer Festen IP über das Büro aus möglich. Alle anderen Anfragen auf diesen Port werden verworfen. Das hatte bis zu Crash so funktioniert und hätte auch nach unserem Server-Umzug so funktionieren sollen bzw. MUSS wieder funktionieren face-smile.

Die Ausgangslage:
aktuell hab ich diverse Server von 1und1 mit Windows am laufen (bitte keine Debatte darüber... face-smile... Ich sag nur ASP und Co.). Wir wollen schlussendlich nur einen Server betreiben!
Bisher lief seit einigen Jahren ein Server 2003R2 x64 mit einer MySQL 5.1 Datenbank und etlichen Websites. Der Zugriff erfolgte vom Büro aus von diversen Rechner per ODBC und Access oder von unserem Intranet-Server und einigen ASP-Seiten aus. Nun wollte ich schon Anfang August ein Umzug auf ein modernes (und günstigeres, da "kleiner") Windows 2008R2 System wagen mit einem neuen MySQL 5.5 und dem IIS7.5. Es war quasi alles eingerichtet NUR den externen Zugriff konnte ich nie realisieren und ich weiß nicht warum. Ich habe mir die Finger wund gesucht. Ich will im Folgenden kurz erklären was ich geprüft habe bzw. wo das Problem liegt:

Beim externen Zugriff auf die MySQL-Datenbank mit z.B. HeidiSQL bekomm ich IMMER einen Socket-Fehler 10060 (Zeitlimit für Verbindung erreicht)
Bei der Überprüfung mit Wireshark (Filter: ip.src == 217.#.#.# or ip.dst == 217.#.#.#) seh ich ja auch definitiv die Anfragen.
4793d850dea71c7182a1b977a9b6ddaf
Die Bindung von MySQL hab ich auch schon angepasst mit bind=87.#.#.#... Mit dem Tool CurrPorts von Nirsoft seh ich ja auch dass der Prozess mysqld auf entsprechendem Port und der entsprechenden IP wartet... Wenn ich bind deaktiviere ist die IP an der stelle dann nur 0.0.0.0
bbff2024ec39f856488beb7390a110f4

Wenn ich jetzt nicht völlig falsch gewickelt bin oder einen Denkfehler habe, müsste mysqld doch eigentlich auf DIESER IP auf meine ankommenden Anfragen reagieren oder?? Ich hab beim Setup und dem Assistenten auch z.B. ausgewählt dass Remotezugriffe möglich sein sollen. Das Bewirkt aber glaube ich nur, dass ein root-User angelegt wird mit einem % für den Host.

Ich habe auch folgende Seite mal durchgeackert: http://dev.mysql.com/doc/refman/5.5/en/can-not-connect-to-server.html
Hat aber auch nichts gebracht face-sad

Ich hab wirklich schon viel versucht, bin aber irgendwie verzweifelt. Ich habe die Befürchtung dass ICH irgendwo den Fehler habe oder fabriziere, dass ich dieses Problem auf ALLEN 4 Servern habe die ich jetzt mehrfach mit Server 2003R2 und 2008R2 installiert habe. Zudem habe ich MySQL 5.5.17 sowie 5.1.59 getestet. Vor allem hat es ja schon irgendwann mal fabriziert. Eingerichtet hatte ich den bisherigen Server leider nicht (der zudem jetzt noch abgekackt ist). Die damalige my.ini hab ich auch nicht mehr, weils mein Vorgänger einfach an der Stelle verkackt hat (und hat zudem NICHT die InnoDB Files gesichert sondern nur die MyISAM :´-(

Ich würde mich wahnsinnig freuen wenn man mir helfen könnte. Evtl beiß ich mich ja auch nur an einem Verständnissproblem fest oder so...
VPN wäre sicher eine Variante, kommt aber momentan noch nicht in Frage.

Fränkische Grüße
Christian

Content-Key: 175354

Url: https://administrator.de/contentid/175354

Printed on: April 19, 2024 at 20:04 o'clock

Member: dan0ne
dan0ne Oct 28, 2011 at 15:47:11 (UTC)
Goto Top
Hallo,

bei MySQL musst du a) dem User erlauben das er sich von jeden Host anmelden darf. Und des weiteren musst du die DB auch so Einstellen das die nicht nur vom Localhost Verbindungen zulässt.

Gruss
Member: ChrisNbg
ChrisNbg Oct 28, 2011 at 17:04:21 (UTC)
Goto Top
ja schon klar soweit.
Wie geschrieben hab ich diverse User angelegt die sich von beliebigen Hosts (%) anmelden dürfen.

aber die Frage ist ja im Grunde, wie ich MySQL konkret beibringe, dass er nicht nur Localhost-Verbindungen zulässt. Ich habe bisher immer nur etwas zum Thema "Bind=" gefunden, welches ich an die öffentliche IP des Servers gebunden habe. Das sieht man ja quasi auch in dem Screenshot von CurrPorts. Aber Anfragen die von extern kommen werden ja einfach ignoriert.
Ein SkipNetwork gibt’s in der my.ini auch nicht...

gibt’s noch Vorschläge? face-smile

Danke schonmal für den ersten Reply!
Gruß
Christian
Member: msr972
msr972 Oct 28, 2011 at 19:01:42 (UTC)
Goto Top
Solange Dein Bind passt, kein SkipNetwork drin ist und der User einen % host (oder entsprechend korrekte hostmask) sollte das so gehen.
ich würde mal eine ebene drüber suchen, in windows ;) nicht dass die FW oder sonstige blockt
Member: ChrisNbg
ChrisNbg Oct 28, 2011 at 21:15:32 (UTC)
Goto Top
na das hab ich doch auch alles schon gemacht,
ich würds ja genau so auch denken.
Aber wie man auch auf den Screenshots sieht, kommen doch die Anfragen definitiv am Server an... oder seh ich das irgendwie falsch?! sobald die Einträge in Wireshark angezeigt werden müsste dass doch auch der MySQLd mitbekommen, oder? das Finde ich halt so misteriös. Vorallem ich könnts ja auf das eine Gerät oder die eine Installation schieben, wenn ichs net schon echt bei 4 Servern getestet hätte... eine Firewall war/ist bisweilen nicht aktiv. Es wurde auch schon mit aktiver FW getestet und entsprechenden Portfreigaben usw. Man kann ja auch im Kontrollcenter von 1und1 eine Firewall aktivieren, die auch entsprechend konfiguriert wurde und test halber abgeschaltet wurde...

Hier mal die vollständige my.ini ohne Kommentare
[client]
port=3306

[mysql]
default-character-set=utf8

[mysqld]
port=3306
bind=87.#.#.#
basedir="D:/webapp/mysql55/"  
datadir="D:/mysqldata/Data/"  
character-set-server=utf8
default-storage-engine=MYISAM
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"  
max_connections=160
query_cache_size=201M
table_cache=320
tmp_table_size=205M
thread_cache_size=8
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=339M
key_buffer_size=316M
read_buffer_size=64K
read_rnd_buffer_size=256K
sort_buffer_size=256K
innodb_data_home_dir="D:/mysqldata/"  
innodb_additional_mem_pool_size=13M
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=7M
innodb_buffer_pool_size=613M
innodb_log_file_size=123M
innodb_thread_concurrency=18

Ist bisher auch nicht sonderlich optimiert. Gibts hierzu kommentare oder was auffälliges??

Gruß
Christian
Member: msr972
msr972 Oct 29, 2011 at 07:12:10 (UTC)
Goto Top
Die IPSec hast Du am Server eingestellt?
Siehe hierzu: http://hilfe-center.1und1.de/search/go.php?t=e727340

Und hast Du mal probiert, mit auskommentiertem bind zu arbeiten?
Wenn kein Bind = alle IP Adressen.
Member: ChrisNbg
ChrisNbg Oct 30, 2011 at 19:17:35 (UTC)
Goto Top
also deinen Link werd ich mir nochmal genauer anschauen. könnte dass denn trotzdem zutreffen, auch wenn ich die Päckchen im Wireshark am Zielgerät sehe?
Also den Paketfilter hab ich in Windows bisher nicht genutzt. wenn dann mal die Firewall von 2008r2 oder diese 1und1 Firewall... beides aber auch bisher nur Temporär...

Gruß Christian
Member: msr972
msr972 Oct 30, 2011 at 22:31:51 (UTC)
Goto Top
Die Frage ist, woher ist das WS Bild?
Auf dem Zielrechner? Oder auf dem sendenden?
Und so gut sind meine WS Kenntnisse nicht. WS hängt sich ja in deine Netzwerkverbindung, allerdings kann ich nicht sagen ob vor oder hinter die Windows Firewall oder eine sonstige FW ....
Member: ChrisNbg
ChrisNbg Oct 30, 2011 at 23:18:53 (UTC)
Goto Top
Wie schon geschrieben "am Zielgerät/Server"...
Ich kanns ehrlich gesagt auch nicht beschwören, aber wäre eigentlich der Überzeugung, dass Wireshark NACH der Firewall greift... also alles was an der Firewall hängen bleibt sollte in Wireshark auch nicht zu sehen sein. Irren könnt ich mich natürlich, aber dann fänd ich das Programm irgendwie ziemlich assi face-wink...

irgendwie langweilt mich das thema langsam echt tierisch. so schwer kanns doch eigentlich nicht sein, vorallem weils früher ja auch mal funktioniert hat. irgendwie bin ich zu blöd oder mysql ists face-wink...

irgendwer muss mir doch helfen können ;-(

Gruß
Christian
Member: ChrisNbg
ChrisNbg Nov 02, 2011 at 15:59:58 (UTC)
Goto Top
Das Problem scheint tatsächlich behoben zu sein.

Mir wurde soeben von einem 1und1 Techniker der Hinweis gegeben, dass alle Windows Server mit einem IP-Filter vorkonfiguriert sind welcher UNABHÄNGIG von der System Firewall läuft. Dieser wird über eine Lokale Sicherheitsrichtlinie konfiguriert und ist standarmäßig so sicher Konfiguriert, dass nur expliziet erlaubte Zugriffe möglich sind, wo MySQL natürlich nicht zu zählen "sollte" face-smile.

Dumm war nur, dass Wireshark die Päckchen nun doch angezeigt hatte und dann erst NACH diesem Blockiert wurden face-sad
Immerhin Plaziert 1und1 am Desktop ein Symbol Namens IP Filter den man nun entsprechend anpassen muss
Hilfe dazu bietet auch http://hilfe-center.1und1.de/server/windows/windows_server_2003/allgeme ...

Hat jemand ne Ahnung wie ich meinen FTP-Passiv Modus mit dem Filezilla Server konfigurieren sollte? Ich kann ja schlecht Tausende Ports manuell öffnen (da scheinbar ein Port-Range nicht vorgesehen ist) oder einfach "Beliebige Ports eingehende" angeben (dass dann den Port-Filter überflüssig macht)... Nach meinem Verständniss öffnet der FTP-Server ja einen Ports zwischen 1024-65535 welches der Server dann über Port 21 dem Client mitteilt der wiederrum versucht die Verbindung auf dem mitgeteilten Port herzustellen...

Gruß
Christian