2015-10-15 11 views
13

Ich versuche Portweiterleitung in Vagrantfile zu Verbindung mit Gast mysqld von Host-System zu konfigurieren, aber reading initial communication packet Fehler erhalten. Host: Yosemite, Gast: Trusty, vagrant 1.7.4Vagrant Port Forwarding für Mysql

Vagrantfile (Host):

config.vm.network "forwarded_port", guest: 80, host: 8080 
config.vm.network "forwarded_port", guest: 3306, host: 3309 

my.ini (Gast):

bind-address   = 127.0.0.1 

8080 Forwarding funktioniert wie ein Charme.

mysql -h127.0.0.1 -uroot -p von Gast funktioniert auch.

mysql -h127.0.0.1 -P 3309 -uroot -p von Host-Ergebnissen mit reading initial communication packet Fehler.

Wenn ich von der Host-Telnet, schließt die Verbindung sofort:

$ telnet localhost 3309 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
Connection closed by foreign host. 

Portweiterleitung funktioniert, wenn ich Box von Host Vagrant ssh:

$ssh [email protected] -p 2222 -L3308:localhost:3306 

Dann kann ich von dem Host verbinden mysql -h127.0.0.1 -P3308 -uroot -p ohne Probleme , die ich als temporäre Problemumgehung verwende.

+0

tun Sie Firewall-Regeln, die den Verkehr auf diesen Ports blockieren würden? –

+0

@ FrédéricHenri nein, es war mein erster Verdächtiger. Es gibt keine einzige iptable-Regel. Jedenfalls habe ich versucht, mit ssh zu tunneln, und es funktioniert ohne Probleme. –

+0

richtig, aber mit dem Tunneling verwenden Sie immer noch den SSH-Port. –

Antwort

18

war schließlich in der Lage es Arbeit zu bilden -

bearbeiten die /etc/mysql/my.cnf Datei und vergewissern Sie sich, entweder

  • Sie bind-address = 0.0.0.0
  • haben oder Sie die Linie #bind-address ...

make Kommentar sicher, dass Sie Ihren MySQL-Server nach der Änderung neu starten

$ sudo service mysql restart 

Dann können Sie von Ihrem Host verbinden - also musste ich zuerst einen Fehler wie

$ mysql -h127.0.0.1 -P 3309 -uroot -p 
Enter password: 
ERROR 1130 (HY000): Host '172.16.42.2' is not allowed to connect to this MySQL server 

so kam ich zurück zu Gast und hat

[email protected]:~$ mysql -h127.0.0.1 -uroot -p 
... 
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.42.2' WITH GRANT OPTION; 
Query OK, 0 rows affected (0.00 sec) 

mysql> FLUSH PRIVILEGES; 
Query OK, 0 rows affected (0.00 sec) 

Dann hatte ich kein Problem zu verbinden von der Host-Maschine

$ mysql -h127.0.0.1 -P 3309 -uroot -p 
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 36 
Server version: 5.5.44-0ubuntu0.12.04.1 (Ubuntu) 
+0

Danke Frederic. Es funktioniert auch mit 'bind-address = 10.0.2.15' in my.cnf. –

+0

Anscheinend verwendet virtualbox diese Schnittstelle für die Portweiterleitung. Ich konnte keine Möglichkeit finden, Ports an andere Schnittstelle als ssh an die Box weiterzuleiten, was nicht sehr praktisch ist, aber irgendwie sinnvoll ist. –

+1

Mit VirtualBox benötigt Vagrant das erste an die virtuelle Maschine angeschlossene Netzwerkgerät als NAT-Gerät. Das NAT-Gerät wird für die Portweiterleitung verwendet, wodurch Vagrant SSH-Zugriff auf die virtuelle Maschine erhält. –

3

Die erste Antwort ist richtig, aber nicht genug.Wenn ich My verbinden SQL, erhalte ich eine Fehlermeldung:

Host '10.0.2.2' is not allowed to connect to this MySQL server

Lösung:

create user 'root'@'10.0.2.2' identified by 'password';

grant all privileges on . to 'root'@'10.0.2.2' with grant option;

flush privileges;

aha, alle Probleme gelöst sind,

Verwandte Themen