VirtualBox Vagrant के अंदर Mysql सर्वर से कैसे कनेक्ट करें?


93

मैंने Vagrant के साथ एक नई VirtualBox मशीन आरोहित की, और उस वीएम के अंदर मैंने MySQL सर्वर स्थापित किया। मैं उस सर्वर को vm से कैसे कनेक्ट कर सकता हूं? मैं पहले से ही Vagrantfile के पोर्ट 3306 को आगे बढ़ाता हूं, लेकिन जब मैं mysql सर्वर से कनेक्ट करने का प्रयास करता हूं, तो यह त्रुटि के साथ प्रतिक्रिया करता है: 'प्रारंभिक संचार पैकेट पढ़ना'

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0

क्या आप अपने कॉन्फ़िगरेशन, विशेष रूप से नेटवर्किंग विकल्प (कितने, टाइप [ब्रिज, NAT, ...]) के साथ-साथ आपके द्वारा किए गए पोर्ट के स्क्रीनशॉट को साझा कर सकते हैं? यह आपके VM पर फ़ायरवॉल से संबंधित समस्या भी हो सकती है।
गोयिक्स

जवाबों:


125

सुनिश्चित करें कि MySQL 0.0.0.0 को बांधता है और 127.0.0.1 को नहीं या मशीन के बाहर से सुलभ नहीं होगा

आप अपनी my.conf फ़ाइल को संपादित करके और bind-addressआइटम की तलाश करके इसे सुनिश्चित कर सकते हैं - आप चाहते हैं कि यह दिखे bind-address = 0.0.0.0। फिर इसे सहेजें और mysql को पुनरारंभ करें:

sudo service mysql restart

यदि आप एक प्रोडक्शन सर्वर पर ऐसा कर रहे हैं, तो आप सुरक्षा के निहितार्थों से अवगत होना चाहते हैं, यहाँ चर्चा की गई है: /server/257513/how-bad-is-setting-mysqls-bind-advress-to -0-0-0-0


यह निश्चित रूप से mysql 5.5 स्थापित करने के लिए मामला था। Mysql.conf में टिप्पणियों से, मुझे लगता है कि यह संस्करण से भिन्न होता है - वे अन्य उत्तरों में उल्लिखित कॉन्फ़िगरेशन को टिप्पणी करने के लिए उपयोग करते हैं।
दलदल

7
आप अपने बूटस्ट्रैप फ़ाइल में इस चरण को निम्न कमांड (CentOS पर परीक्षण) के साथ स्वचालित कर सकते हैं:sed -i 's/symbolic-links=0/symbolic-links=0\nbind-address=0.0.0.0/g' /etc/my.cnf
ronan_mac

या सिर्फ बाहर टिप्पणी bind-addressलाइन
xiaoyifang

9
मुझे यह मिल गया Host '10.0.2.2' is not allowed to connect to this MySQL server। लेकिन serverfault.com/a/486716/147813 के
CMCDragonkai

2
@CMCDragonkai serverfault लिंक (टिप्पणी करने के लिए मेरे पास प्रतिष्ठा नहीं है) के अलावा, इस आदेश का उपयोग रूट उपयोगकर्ता की अनुमतियों को स्वचालित करने के लिए एक Ansible स्क्रिप्ट की तरह कुछ में किया जा सकता है:mysql -e "create user 'root'@'10.0.2.2' identified by 'vagrant'; grant all privileges on *.* to 'root'@'10.0.2.2' with grant option; flush privileges;"
KayakinKoder

49

ssh vagrant@127.0.0.1 -p 2222(पासवर्ड योनि) के साथ अपने बॉक्स में प्रवेश करें

तब: sudo nano /etc/mysql/my.cnfऔर # के साथ निम्नलिखित पंक्तियों पर टिप्पणी करें

#skip-external-locking 
#bind-address

इसे सहेजें और बाहर निकलें

फिर: sudo service mysql restart

फिर आप SSH के माध्यम से अपने MySQL सर्वर से जुड़ सकते हैं।


10
मैंने "" के बजाय "#" के साथ टिप्पणी की;
जे।

3
मुझे पता बाँधना है और इसे चलाना है: GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' WITH GRANT OPTION;
एन

धन्यवाद, यह मुझे उम्र के लिए परेशान कर रहा था। # skip-external-lockingउसे हल कर लिया!
जैक

18

मैं इस मुद्दे पर हाल ही में आया था। मैंने एक कॉन्फ़िगरेशन उत्पन्न करने के लिए PuPHPet का उपयोग किया।

SSH के माध्यम से MySQL से जुड़ने के लिए, "योनि" पासवर्ड मेरे लिए काम नहीं कर रहा था, इसके बजाय मुझे SSIAL फाइल के माध्यम से प्रमाणित करना था।

MySQL कार्यक्षेत्र के साथ कनेक्ट करने के लिए

कनेक्शन विधि

SSH पर मानक टीसीपी / आईपी

SSH

Hostname: 127.0.0.1:2222 (forwarded SSH port)
Username: vagrant
Password: (do not use)
SSH Key File: C:\vagrantpath\puphpet\files\dot\ssh\insecure_private_key
              (Locate your insercure_private_key)

माई एसक्यूएल

Server Port: 3306
username: (root, or username)
password: (password)

कनेक्शन का परीक्षण करें।


मैंने मूल रूप से डेटाबेस को Phpstorm के साथ जोड़ने के लिए एक ही काम किया था, लेकिन PuPHPet के बजाय मैंने Protobox का उपयोग किया।
null

17

किसी को भी mysql कार्यक्षेत्र या अगली कड़ी का उपयोग कर ऐसा करने की कोशिश के लिए ये इनपुट हैं:

Mysql Host: 192.168.56.101 (or ip that you choose for it)
username: root (or mysql username u created)
password: **** (your mysql password)
database: optional
port: optional (unless you chose another port, defaults to 3306)

ssh host: 192.168.56.101 (or ip that you choose for this vm, like above)
ssh user: vagrant (vagrants default username)
ssh password: vagrant (vagrants default password)
ssh port: optional (unless you chose another)

स्रोत: https://coderwall.com/p/yzwqvg


1
यह बहुत मददगार था! मुझे वर्चुअल बॉक्स और ssh एजेंट फ़ॉरवर्डिंग का उपयोग करते हुए बाइंड-एड्रेस को एडजस्ट करने की ज़रूरत नहीं थी
kasakka

1
सुनिश्चित करें कि आप अपनी होस्ट मशीन की ज्ञात_होस्ट फ़ाइल से कोई भी सार्वजनिक कुंजी निकालते हैं जो समान होस्ट (IP पता) के लिए है। यदि आप एक ही आईपी पते के साथ एक और वैग्रेंट वीएम का उपयोग कर रहे हैं तो ऐसा हुआ होगा
जॉन हडसन

आप vagrant ssh-configकमांड से SSH कॉन्फ़िगरेशन मान भी प्राप्त कर सकते हैं ।
तैलर

13

खैर, चूंकि दिए गए उत्तरों में से किसी ने भी मेरी मदद नहीं की, इसलिए मुझे अधिक देखना पड़ा, और इस लेख में समाधान मिला ।

और संक्षेप में जवाब निम्नलिखित है:

MySQL कार्यक्षेत्र का उपयोग करके MySQL से कनेक्ट करना

Connection Method: Standard TCP/IP over SSH
SSH Hostname: <Local VM IP Address (set in PuPHPet)>
SSH Username: vagrant (the default username)
SSH Password: vagrant (the default password)
MySQL Hostname: 127.0.0.1
MySQL Server Port: 3306
Username: root
Password: <MySQL Root Password (set in PuPHPet)>

दिए गए दृष्टिकोण का उपयोग करते हुए मैं MySQL कार्यक्षेत्र का उपयोग करके और अपने वेलेंटाइन दिवस स्टूडियो का उपयोग करके मेजबान Ubuntu मशीन से योनि में mysql डेटाबेस से कनेक्ट करने में सक्षम था।


मैं वैलेंटाइना का उपयोग कर रहा हूं, जो मूल रूप से MySQL वर्कबेंच है कि कोई वैग्रंट गेस्ट सर्वर से कैसे कनेक्ट होगा। सभी उत्तरों में से, यह एक, यहीं, इसने काम किया। वह सब सामान जो मेरे लिए PuPHPet द्वारा संभाला गया था, इसलिए वेग्रांट कॉन्फ़िगरेशन सामान शायद उन लोगों के लिए अधिक है जो मैन्युअल रूप से अपने वैग्रांटफाइल्स को कॉन्फ़िगर करना पसंद करते हैं। PuPHPet लोगों के लिए यह उत्तर है।
unrivaledcreations

मुझे योनि बॉक्स के लिए SSH कुंजी फ़ाइल पथ को निजी कुंजी फ़ाइल में निर्दिष्ट करना पड़ा: $HOME/project/.vagrant/machines/default/virtualbox/private_keyUbuntu 14.04 में
फ्रांसिस्को क्विन्टो

आप vagrant ssh-configकमांड से SSH कॉन्फ़िगरेशन मान भी प्राप्त कर सकते हैं ।
तैलर

2

बॉक्स में लॉग इन करने के बाद मेरे लिए काम करने वाले चरण इस प्रकार हैं:

MySQL कॉन्फ़िगरेशन फ़ाइल का पता लगाएँ:

$ mysql --help | grep -A 1 "Default options"

Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

Ubuntu 16 पर, पथ आम तौर पर है /etc/mysql/mysql.conf.d/mysqld.cnf

बाइंड-एड्रेस के लिए कॉन्फ़िगरेशन फ़ाइल बदलें:

यदि यह मौजूद है, तो मान को निम्नानुसार बदलें। यदि यह मौजूद नहीं है, तो इसे [mysqld] अनुभाग में कहीं भी जोड़ें।

bind-address = 0.0.0.0

कॉन्फ़िगरेशन फ़ाइल में अपने परिवर्तन सहेजें और MySQL सेवा को पुनरारंभ करें।

service mysql restart

डेटाबेस उपयोगकर्ता तक पहुंच / अनुदान प्रदान करें:

रूट उपयोगकर्ता के रूप में MySQL डेटाबेस से कनेक्ट करें और निम्न SQL कमांड चलाएं:

mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'password';

mysql> GRANT ALL PRIVILEGES ON mydb.* TO 'username'@'%';

1

इसने मेरे लिए काम किया: वैगरेंट में MySQL से कनेक्ट करें

username: vagrant password: vagrant

sudo apt-get update sudo apt-get install build-essential zlib1g-dev
git-core sqlite3 libsqlite3-dev sudo aptitude install mysql-server
mysql-client


sudo nano /etc/mysql/my.cnf change: bind-address            = 0.0.0.0


mysql -u root -p

use mysql GRANT ALL ON *.* to root@'33.33.33.1' IDENTIFIED BY
'jarvis'; FLUSH PRIVILEGES; exit


sudo /etc/init.d/mysql restart




# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant::Config.run do |config|

  config.vm.box = "lucid32"

  config.vm.box_url = "http://files.vagrantup.com/lucid32.box"

  #config.vm.boot_mode = :gui

  # Assign this VM to a host-only network IP, allowing you to access
it   # via the IP. Host-only networks can talk to the host machine as
well as   # any other machines on the same network, but cannot be
accessed (through this   # network interface) by any external
networks.   # config.vm.network :hostonly, "192.168.33.10"

  # Assign this VM to a bridged network, allowing you to connect
directly to a   # network using the host's network device. This makes
the VM appear as another   # physical device on your network.   #
config.vm.network :bridged

  # Forward a port from the guest to the host, which allows for
outside   # computers to access the VM, whereas host only networking
does not.   # config.vm.forward_port 80, 8080

  config.vm.forward_port 3306, 3306

  config.vm.network :hostonly, "33.33.33.10"


end
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.