2015-10-15 15 views
13

Tôi đang cố gắng thiết lập cổng chuyển tiếp trong Vagrantfile để kết nối với khách mysqld từ hệ thống máy chủ nhưng gặp lỗi reading initial communication packet. Host: Yosemite, Khách: Trusty, lang thang 1.7.4Chuyển tiếp cổng âm thanh cho Mysql

Vagrantfile (host):

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

my.ini (khách):

bind-address   = 127.0.0.1 

8080 chuyển tiếp hoạt động giống như một nét duyên dáng.

mysql -h127.0.0.1 -uroot -p từ khách cũng hoạt động.

mysql -h127.0.0.1 -P 3309 -uroot -p từ kết quả máy chủ với lỗi reading initial communication packet.

Khi tôi telnet từ máy chủ, kết nối ngay lập tức đóng cửa:

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

Port forwarding hoạt động khi tôi ssh vào Vagrant hộp từ máy chủ:

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

Sau đó, tôi có thể kết nối từ máy chủ mysql -h127.0.0.1 -P3308 -uroot -p không có vấn đề , mà tôi sử dụng như một giải pháp tạm thời.

+0

làm bạn có quy tắc tường lửa mà có thể chặn giao thông trên những cổng? –

+0

@ FrédéricHenri no, đó là nghi phạm đầu tiên của tôi. Không có quy tắc iptable duy nhất. Dù sao, tôi đã cố gắng hầm với ssh, và nó hoạt động mà không có vấn đề gì. –

+0

ngay nhưng với đường hầm bạn vẫn sử dụng cổng ssh. –

Trả lời

18

cuối cùng đã có thể làm cho nó hoạt -

chỉnh sửa các /etc/mysql/my.cnf tập tin và chắc chắn rằng, một trong hai

  • bạn có bind-address = 0.0.0.0
  • hoặc bạn nhận xét dòng #bind-address ...

làm chắc chắn khởi động lại máy chủ mysql của bạn sau khi thay đổi

$ sudo service mysql restart 

Sau đó, bạn có thể kết nối từ máy chủ của bạn - vì vậy đầu tiên tôi đã có một lỗi như

$ 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 

vì vậy tôi trở lại khách và đã làm

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

Sau đó, tôi không có vấn đề để kết nối từ máy chủ

$ 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

Cảm ơn Frederic. Nó cũng làm việc với 'bind-address = 10.0.2.15' trong my.cnf. –

+0

Dường như, VirtualBox sử dụng giao diện này để chuyển tiếp cổng. Tôi không thể tìm thấy một cách để chuyển tiếp cổng để lo giao diện khác hơn là ssh vào hộp, mà không phải là rất thuận tiện, nhưng kinda có ý nghĩa. –

+1

ngay với VirtualBox, Vagrant yêu cầu thiết bị mạng đầu tiên được gắn vào máy ảo là thiết bị NAT. Thiết bị NAT được sử dụng để chuyển tiếp cổng, đó là cách Vagrant truy cập SSH vào máy ảo. –

3

Câu trả lời đầu tiên là đúng nhưng không đủ. Khi tôi kết nối SQL, tôi nhận được một lỗi:

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

Giải pháp:

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, tất cả các vấn đề được giải quyết,

Các vấn đề liên quan