[Windows] MySQL "bind-address" einfügen

Thaxll'ssillyia

Captain
Registriert
Dez. 2007
Beiträge
3.550
Hallo Community!

Ich habe hier einen Win7 x64-Server laufen, auf dem MySQL 5.5 (als Teil von Xampp) rennt.
Ich würde jetzt gerne mit meinem C#-Programm von einem anderen Rechner auf die Datenbank zugreifen.

Dazu habe ich bei Nachforschungen rausgefunden, dass man in der my.ini von SQL den Eintrag bind-address einfügen muss.

http://www.hann3mann.de/web-artikel/anzeige/externer-zugriff-auf-mysql-server/

Lauf diesem Artikel müssten mehrere my-ini-Files da sein, allerdings kann ich nur die im MySQL-Installationsverzeichnis finden.

Wenn ich jetzt bind-address = 192.168.xxx.xxx oder 0.0.0.0 eintrage, habe ich trotzdem keinen Zugriff vom lokalen Netzwerk aus.
Ich weis auch nicht genau, wo in die Datei ich den Befehl eintragen soll. Steht leider nirgendwo.

Was mache ich falsch? Vielen Dank für Hilfe!

Gruß Thax

PS: Hier meine my.ini (im Installationsverzeichnis von mySQL):

# The following options will be passed to all MySQL clients
[client]
# password = your_password
port = 3306
socket = "C:/xampp/mysql/mysql.sock"

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port= 3306
bind-address = 0.0.0.0
socket= "C:/xampp/mysql/mysql.sock"
basedir="C:/xampp/mysql"
tmpdir="C:/xampp/tmp"
datadir="C:/xampp/mysql/data"
pid_file="mysql.pid"
skip-external-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log_error="mysql_error.log"

#skip-networking
skip-federated

server-id = 1

#skip-innodb
innodb_data_home_dir = "C:/xampp/mysql/data"
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = "C:/xampp/mysql/data"
#innodb_log_arch_dir = "C:/xampp/mysql/data"
## You can set .._buffer_pool_size up to 50 - 80 %
## of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
## Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout
 
Zuletzt bearbeitet:
ohne genau nachgeschaut zu haben:
das bind-address gibt nur an auf welchen ip dein mysql server horcht. 0.0.0.0 sorgt dafür, dass er auf allen ips connections erwartet, etc.

was du suchst ist der eintrag in der user tabelle. beim erstellen von usern kannst du festlegen welche user auch von fremden hosts akzeptiert werden. meine vermutung ist daher, dass der user, den du verwendest, nur von localhost connecten darf und dementsprechend du natürlich mit ihm nicht connecten kannst.

lösung:
auf dem server per mysql client den user so anpassen, sodass du vom lan auch connecten darfst.
 
Hey danke für die schnelle Antwort.

Ich hab jetzt per phpmyadmin einen User Thax erstellt mit Host = %.
Der hat auch volle Rechte für die Datenbank thax.

Hier mal ein Screenshot der MySQL Workbench, von der ich auf den Server zugreifen will.

Leider immer noch der Fehler, dass er keine Verbindung aufbauen konnte.
 

Anhänge

  • SQL Workbench.png
    SQL Workbench.png
    46,1 KB · Aufrufe: 1.651
naja, wenn du per phpmyadmin auf der gleichen maschine mit dem account connecten kannst, ist das zumindest schonmal sichergestellt.

dann halt prüfen, ob dein daemon auf der ip:3306 (also entweder 0.0.0.0:3306 oder lanip:3306, nicht 127.0.0.1:3306 oder localhost:3306) überhaupt connections erwartet. netstat /a sollte 3306 zeigen, falls du ne linux kiste zur hand hast: nmap -v -p 3306 ip.

bind-address sollte eigentlich nach nem daemon restart funktionieren, sobald es in der ini geändert ist. firewall die den port blockt?

achja und vergiss die links, die du da gepostet hast. der erste link strotzt nur so vor fehler und falschinterpretierungen. der zweite link aus dem manual und mehrere ini/cnf files bezieht sich darauf, dass du effektiv für mehrere daemons andere configs laden kannst etc. ist erstmal für dich nicht weiter von belangen, da du vom xampp die ini im installationsverzeichnis als standard verwendest.
 
Zuletzt bearbeitet:
also ich kann mit dem Account per phpmyadmin auch von dem anderen Rechner aus connecten.

Wie kann ich am einfachsten prüfen, wo der mySQL überall horcht?

Firewall habe ich auf dem Server probeweise deaktiviert, ändert nix.
 
das mit phpmyadmin ist ja so, weil der websrv der das hostet wahrscheinlich die gleiche kiste ist, wie der sql server. spielt keine rolle wer die website aufmacht, zählt nur von wo das php aus versucht zuzugreifen.

netstat /a /n sollte dir auf ner windows kiste die ports und dazugehörigen ips anzeigen.
wenn da 0.0.0.0:3306 erscheint ist es richtig. bei 127.0.0.1:3306 ist es falsch. wenn bind-address 0.0.0.0 inner ini nicht funzt, dann sollte zumindest die lanip des servers funktionieren.
 
Ok, ich habs hingekriegt. Lag doch an der Firewall. Danke an thes33k!

PS: Ich wüsste nicht, dass ich so viele Ports geöffnet habe...Bei netstat /a /n sinds fast 50...
 
Zuletzt bearbeitet:
Bidde bidde,
das mit den Ports ist übrigens nicht unbedingt bedenklich:
netstat /a /n zeigt auch die ports an, die dein pc nur zum aufrufen anderer ports öffnet (das sind in aller regel die mit den hohen nummern).
außerdem zeigt netstat /a quasi alle geöffneten ports doppelt an, sofern du ipv6 support aktiviert hast (z.b. default bei windows 7).
abschließend kommt noch dazu, dass manche services sowohl tcp als auch udp unterstützen und so für beide protokolle die ports offen halten.

nichts desto trotz gilt: nen gut geconftes system hat nur so wenig ports offen wie irgends möglich.
 
Zurück
Oben