2015-10-15 26 views
13

Próbuję ustawić przekierowanie portów w Vagrantfile, aby połączyć się z gościem mysqld z hosta, ale otrzymam błąd reading initial communication packet. Host: Yosemite, Gość: Wierny, włóczęga 1.7.4Przekierowanie portów dla Mysql

Vagrantfile (host):

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

my.ini (gość):

bind-address   = 127.0.0.1 

8080 Forwarding działa jak czar.

mysql -h127.0.0.1 -uroot -p od gościa również działa.

mysql -h127.0.0.1 -P 3309 -uroot -p z wyników hosta z błędem reading initial communication packet.

Kiedy telnet z hostem, połączenie natychmiast zamyka:

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

Port Forwarding działa kiedy ssh do Vagrant pudełko z hostem:

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

Wtedy mogę się połączyć z hostem mysql -h127.0.0.1 -P3308 -uroot -p bez problemów , którego używam jako tymczasowego obejścia.

+0

masz reguł zapory, które blokują ruch na tych portach? –

+0

@ FrédéricHenri nie, to był mój pierwszy podejrzany. Nie ma jednej reguły iptable. W każdym razie, próbowałem tunelować z ssh i działa bez problemów. –

+0

w prawo, ale z tunelowaniem nadal korzystasz z portu ssh. –

Odpowiedz

18

mógł wreszcie, aby to działało -

edytować plik /etc/mysql/my.cnf i upewnić się, czy

  • masz bind-address = 0.0.0.0
  • lub komentować linię #bind-address ...

make pamiętaj, aby zrestartować serwer mysql po zmianie

$ sudo service mysql restart 

Następnie można połączyć z hostem - tak po raz pierwszy wystąpił błąd jak

$ 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 

więc wróciłem do gościa i zrobił

[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) 

Wtedy nie miałem problemu, aby połączyć z komputera hosta

$ 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

Dzięki Fryderykowi. Działa również z 'bind-address = 10.0.2.15' w my.cnf. –

+0

Najwyraźniej wirtualna skrzynka używa tego interfejsu do przekierowania portów. Nie mogłem znaleźć sposobu na przekazywanie portów do interfejsu innego niż ssh do skrzynki, co nie jest zbyt wygodne, ale trochę sensowne. –

+1

prawo w VirtualBox, Vagrant wymaga, aby pierwsze urządzenie sieciowe podłączone do maszyny wirtualnej było urządzeniem NAT. Urządzenie NAT jest używane do przekierowania portów, w ten sposób Vagrant uzyskuje dostęp SSH do maszyny wirtualnej. –

3

Pierwsza odpowiedź jest słuszna, ale niewystarczająca. Kiedy połączę się z My SQL, otrzymuję błąd:

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

Rozwiązanie:

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, wszystkie problemy zostały rozwiązane,