Mysql कार्यक्षेत्र को डॉकर के अंदर चलने के लिए कैसे जुड़ें?




docker mysql-workbench (2)

मुझे मेजबाननाम में फ़ील्ड मान सेट करके 127.0.0.1 (स्थानीयहोस्ट), डिफ़ॉल्ट रूप से बंदरगाह 3306 को आपके क्रेडिट के साथ मिला है।

मैं डॉक्स कंटेनर के अंदर mysql सर्वर का उपयोग कर रहा हूं और डॉकर के अंदर पहुंचने में सक्षम हूं। मेरे स्थानीय (मेजबान मशीन) पर चलने वाले mysql workbench में कैसे कनेक्शन बनाने के लिए


2 डॉकर्स से संबंधित शर्तें:

  • सबसे पहले, आपका डॉकर चलाने के लिए एक होस्ट पोर्ट में MySQL पोर्ट को मैप करना होगा:

    docker run -p host:container

(उदाहरण के लिए: docker run -d -p 3306:3306 tutum/mysql )

  • दूसरा, यदि आप एक वीएम में डॉकर का उपयोग कर रहे हैं (डॉकर-मशीन, बूट 2 डॉककर के साथ), तो आपको docker-machine ip <VMname> के आईपी का प्रयोग करना होगा, मेजबान मैप किए गए पोर्ट के साथ।

    http://$(docker-machine ip <VMname>):hostPort

यदि आपको localhost का उपयोग करने की आवश्यकता है, तो आपको वर्चुअलबॉक्स स्तर पर कुछ पोर्ट अग्रेषण करना होगा:

VBoxManage controlvm "boot2docker-vm" natpf1 "tcp-port3306,tcp,,3306,,3306"
VBoxManage controlvm "boot2docker-vm" natpf1 "udp-port3306,udp,,3306,,$3306"

( controlvm यदि वीएम चालू हो रहा है, तो modifyvm वीएम बंद है) (अपने वीएम के नाम से " boot2docker-vm " को प्रतिस्थापित करें: docker-machine ls )

2 mysql- संबंधित शर्तों:

  • जैसा कि nkratzke/EasyMySQL/Dockerfile में सचित्र है, आपको रिमोट एक्सेस सक्षम करने की आवश्यकता है:

    # Enable remote access (default is localhost only, we change this
    # otherwise our database would not be reachable from outside the container)
    RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
  • आपके डॉकर छवि में अपना डेटाबेस प्रारंभ करते समय आपको उपयोगकर्ताओं को बनाने की आवश्यकता है
    उदाहरण के लिए देखें, nkratzke/EasyMySQL/start-database.sh , जो Dockerfile CMD द्वारा कहा जाता है:

    /usr/sbin/mysqld &
    sleep 5
    echo "Creating user"
    echo "CREATE USER '$user' IDENTIFIED BY '$password'" | mysql --default-character-set=utf8
    echo "REVOKE ALL PRIVILEGES ON *.* FROM '$user'@'%'; FLUSH PRIVILEGES" | mysql --default-character-set=utf8
    echo "GRANT SELECT ON *.* TO '$user'@'%'; FLUSH PRIVILEGES" | mysql --default-character-set=utf8
    echo "finished"




mysql-workbench