डिफ़ॉल्ट रूप से परिनियोजन के बाद MySQL में निम्नलिखित कनेक्शन प्रतिबंध हैं:
mysql> select host, user from mysql.user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| localhost | healthchecker |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
4 rows in set (0.00 sec)
जाहिरा तौर पर, सुरक्षा उद्देश्यों के लिए आप इसे डॉकर छवि के बाहर कनेक्ट करने में सक्षम नहीं होंगे। यदि आपको रूट को किसी भी होस्ट से कनेक्ट करने की अनुमति देने के लिए इसे बदलने की आवश्यकता है (जैसे, विकास उद्देश्यों के लिए), तो करें:
-
सभी आवश्यक पोर्ट मैपिंग के साथ अपनी mysql छवि प्रारंभ करें:
docker run -p 3306:3306 --name=mysql57 -d mysql/mysql-server:5.7
या, यदि पूर्ण पोर्ट मैपिंग की आवश्यकता है:
docker run -p 3306:3306 -p 33060:33060 --name=mysql57 -d mysql/mysql-server:5.7
-
अगर यह नया इंस्टालेशन है - तो डिफॉल्ट पासवर्ड लें:
docker logs mysql57 2>&1 | grep GENERATED
-
mysql
. का उपयोग करके कनेक्ट करें क्लाइंट सीधे docker में mysqld पर जाता है:docker exec -it mysql57 mysql -uroot -p
-
यदि यह नया इंस्टॉलेशन है तो आपको
ALTER USER
. का उपयोग करके पासवर्ड बदलने के लिए कहा जाएगा आज्ञा। करो। -
SQL चलाएँ:
update mysql.user set host = '%' where user='root';
-
mysql
से बाहर निकलें ग्राहक। -
कंटेनर को पुनरारंभ करें:
docker restart mysql57
अब आप MySQL वर्कबेंच से
. से कनेक्ट कर पाएंगेhost: `0.0.0.0`
port: `3306`
सभी परिवर्तनों के बाद क्वेरी दिखाई देगी:
select host, user from mysql.user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| localhost | healthchecker |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+---------------+