मैंने आधिकारिक गाइड का पालन किया: https://mariadb.com/kb/en/installing -और-उपयोग-मारियाडब-के माध्यम से-डॉकर/ हालाँकि, मुझे अपनी my.cnf फ़ाइल में बाइंड-एड्रेस के साथ कोई प्रविष्टि नहीं मिली है, यह इस तरह दिखता है:

# The MariaDB configuration file
#
# The MariaDB/MySQL tools read configuration files in the following order:
# 0. "/etc/mysql/my.cnf" symlinks to this file, reason why all the rest is read.
# 1. "/etc/mysql/mariadb.cnf" (this file) to set global defaults,
# 2. "/etc/mysql/conf.d/*.cnf" to set global options.
# 3. "/etc/mysql/mariadb.conf.d/*.cnf" to set MariaDB-only options.
# 4. "~/.my.cnf" to set user-specific options.
#
# If the same option is defined multiple times, the last one will apply.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# If you are new to MariaDB, check out https://mariadb.com/kb/en/basic-mariadb-articles/

#
# This group is read both by the client and the server
# use it for options that affect everything
#
[client-server]
# Port or socket location where to connect
# port = 3306
socket = /run/mysqld/mysqld.sock

# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

जब मैं इसे बाहर से कनेक्ट करने का प्रयास करता हूं, यानी होस्ट कंप्यूटर से, मुझे निम्न मिलता है:

Creating a session to 'root@172.17.0.2'
MySQL Error 2003 (HY000): Can't connect to MySQL server on '172.17.0.2' (60)

सर्वर से बाहर से कनेक्ट करने में सक्षम होने के लिए मुझे क्या करना चाहिए? यह चलता है के रूप में मैं डोकर कंटेनर के भीतर से कनेक्ट कर सकते हैं।

मैं मैकोज़ का उपयोग कर रहा हूं।

0
Greg 13 नवम्बर 2020, 23:16

2 जवाब

सबसे बढ़िया उत्तर

आप यह ट्रिक mysql -h 172.17.0.2 -u root -p Mac पर नहीं कर सकते।

There is no docker0 bridge on macOS🔗
Because of the way networking is implemented in Docker Desktop for Mac, you cannot see a docker0 interface on the host. This interface is actually within the virtual machine.

I cannot ping my containers
Docker Desktop for Mac can’t route traffic to containers.

कृपया Mac के लिए आधिकारिक docker दस्तावेज़ देखें।

मेरा सुझाव है कि आप कंटेनर पोर्ट को होस्ट -p 127.0.0.1:3306:3306 के सामने लाएँ और फिर अपने DB से लोकलहोस्ट mysql -h 127.0.0.1 -p -uroot से कनेक्ट करें।

docker run --name mariadbtest \
 -p 127.0.0.1:3306:3306\
 -e MYSQL_ROOT_PASSWORD=mypass \
 -d mariadb/server:10.3 \
 --log-bin \
 --binlog-format=MIXED
3
Andrei Kovrov 14 नवम्बर 2020, 00:01

आपका कॉन्फ़िगरेशन कनेक्शन के लिए socket का उपयोग करता है, जैसा कि आपने टिप्पणी की है port:

# port = 3306
socket = /run/mysqld/mysqld.sock

तो आपको ऊपर port पर टिप्पणी नहीं करनी चाहिए (और socket कॉन्फ़िगरेशन को हटा दें / टिप्पणी करें)। यह डेटाबेस को पोर्ट 3306 पर सुनने का कारण बनेगा।

स्थानीय उपयोग के लिए आप बाद में उस पोर्ट को लोकलहोस्ट में पोर्ट-मैप करना चाहेंगे, उदाहरण के लिए अपने कंटेनर को -p के साथ चलाना ताकि आप localhost:3306 के माध्यम से जुड़ सकें:

docker -d -p 127.0.0.1:3306:3306 [..] example/mariadb
1
Simon 13 नवम्बर 2020, 23:45