2015-10-15 12 views
13

के लिए वाग्रेंट पोर्ट अग्रेषण मैं मेजबान सिस्टम से अतिथि mysqld से कनेक्ट करने के लिए Vagrantfile में पोर्ट अग्रेषण सेट करने का प्रयास कर रहा हूं, लेकिन reading initial communication packet त्रुटि प्राप्त करें। मेजबान: Yosemite, अतिथि: भरोसेमंद, आवारा 1.7.4माइस्क्ल

Vagrantfile (मेजबान):

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

my.ini (अतिथि):

bind-address   = 127.0.0.1 

8080 अग्रेषण एक आकर्षण की तरह काम करता है।

अतिथि से mysql -h127.0.0.1 -uroot -p भी काम करता है।

mysql -h127.0.0.1 -P 3309 -uroot -p होस्ट परिणामों से reading initial communication packet त्रुटि के साथ।

जब मैं मेजबान से टेलनेट, कनेक्शन तुरंत बंद कर देता है:

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

पोर्ट अग्रेषण काम करता है जब मैं मेजबान से बॉक्स आवारा को ssh:

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

तो मैं समस्याओं के बिना मेजबान mysql -h127.0.0.1 -P3308 -uroot -p से कनेक्ट कर सकते हैं , जिसे मैं एक अस्थायी कामकाज के रूप में उपयोग करता हूं।

+0

आप फ़ायरवॉल नियम है कि उन बंदरगाहों पर यातायात को ब्लॉक कर देगा क्या ज़रूरत है? –

+0

@ फ्रेडेरिक हेनरी नहीं, यह मेरा पहला संदिग्ध था। कोई एकल iptable नियम नहीं है। वैसे भी, मैंने एसएसएच के साथ सुरंग करने की कोशिश की, और यह बिना किसी समस्या के काम करता है। –

+0

सही लेकिन सुरंग के साथ आप अभी भी एसएसएच पोर्ट का उपयोग करते हैं। –

उत्तर

18

अंत में यह काम कर पा रहा था -

संपादित /etc/mysql/my.cnf फ़ाइल और सुनिश्चित करें कि, या तो

  • आप bind-address = 0.0.0.0
  • है या आप लाइन टिप्पणी #bind-address ...

मेकअप परिवर्तन के बाद अपने mysql सर्वर को पुनरारंभ करना सुनिश्चित करें

$ sudo service mysql restart 

तो फिर आप अपने मेजबान से कनेक्ट कर सकते हैं - तो मैं पहली बार

$ 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 

की तरह एक त्रुटि थी तो मैं मेहमान के लिए वापस आया और फिर

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

किया मैं कनेक्ट करने के लिए कोई समस्या नहीं थी मेजबान मशीन से

$ 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

धन्यवाद फ्रेडरिक। यह my.cnf में 'बाइंड-एड्रेस = 10.0.2.15' के साथ भी काम करता है। –

+0

स्पष्ट रूप से, वर्चुअलबॉक्स पोर्ट अग्रेषण के लिए इस इंटरफ़ेस का उपयोग करता है। मुझे बंदरगाह के अलावा एसएसएच के अलावा अन्य इंटरफ़ेस बंदरगाहों को आगे बढ़ाने का कोई तरीका नहीं मिला, जो कि बहुत सुविधाजनक नहीं है, फिर भी थोड़े समझ में आता है। वर्चुअलबॉक्स के साथ –

+1

, वग्रेंट को वर्चुअल मशीन से जुड़े पहले नेटवर्क डिवाइस को एनएटी डिवाइस होने की आवश्यकता होती है। एनएटी डिवाइस का उपयोग बंदरगाह अग्रेषण के लिए किया जाता है, इस प्रकार वग्रेंट को वर्चुअल मशीन पर एसएसएच पहुंच मिलती है। –

3

पहला उत्तर सही है लेकिन पर्याप्त नहीं है। जब मैं अपना कनेक्ट करता हूं एसक्यूएल, मैं एक त्रुटि मिलती है:

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

समाधान:

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;

अहा, सभी समस्याओं को हल कर रहे हैं,

संबंधित मुद्दे