माईएसक्यूएल कंटेनर शुरू करते समय आप एक अतिरिक्त पर्यावरण चर पास कर सकते हैं MYSQL_ROOT_HOST=<ip> यह दिए गए आईपी पते से लॉगिन करने की अनुमति के साथ एक रूट उपयोगकर्ता बनाएगा । यदि आप किसी भी आईपी से लॉगिन की अनुमति देना चाहते हैं तो आप निर्दिष्ट कर सकते हैं MYSQL_ROOT_HOST=%.
यह केवल एक नए बनाए गए कंटेनरों के लिए काम करेगा ।
जब नए कंटेनर कताई:
docker run --name some-mysql -e MYSQL_ROOT_HOST=% -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest
कंपोज़ फ़ाइल में यह होगा:
version: '2'services: ### Mysql container mysql: image: mysql:latest ports: - "3306:3306" volumes: - /var/lib/mysql:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: test_db MYSQL_USER: test MYSQL_PASSWORD: test_pass MYSQL_ROOT_HOST: '%' # needs to be enclosed with quotes
जब आप एक माईएसक्यूएल सर्वर से कनेक्ट करते हैं, तो यह जांचता है कि यह है GRANT कनेक्टिंग माईएसक्यूएल क्लाइंट मशीन के आईपी पते के खिलाफ तालिका ("माईएसक्यूएल सर्वर पर" माईएसक्यूएल| डेटाबेस में "उपयोगकर्ता" तालिका) । अगर वहाँ हैं कोई मिलान प्रविष्टियाँ नहीं "माईएसक्यूएल "डेटाबेस में" उपयोगकर्ता "तालिका में" होस्ट " कॉलम में, माईएसक्यूएल तुरंत कनेक्शन बंद कर देगा साथ में ERROR 1130.
जांचें कि क्या क्लाइंट डेटाबेस सर्वर पर पोर्ट 3306 (माईएसक्यूएल पोर्ट) प्राप्त करने में सक्षम है:
telnet 172.21.0.2 3306Trying ::1...Connected to 172.21.0.2.Escape character is '^]'.
आपको माईएसक्यूएल सर्वर में लॉग इन करना चाहिए, और अनुदान तालिका की जांच करने के लिए "माईएसक्यूएल" चलाना चाहिए:
"रूट" है कई आईपी पते से कनेक्ट करने के लिए अधिकृत है, लेकिन क्लाइंट आईपी 172.21.0.1 से नहीं । तो, बस उस आईपी से अनुदान पहुंच जोड़ें:
mysql> GRANT ALL PRIVILEGES ON root.* TO 'your_db'@'172.21.0.1' IDENTIFIED BY 'Password';Query OK, 0 rows affected (0.00 sec)mysql> FLUSH PRIVILEGES;Query OK, 0 rows affected (0.00 sec)