(ডকার বা মাইএসকিএল প্রশাসনের সাথে আমার সীমিত জ্ঞানের কারণে এটি সম্ভবত একটি বোবা প্রশ্ন, তবে যেহেতু আমি এই বিষয়ে একটি পুরো সন্ধ্যা কাটিয়েছি, তাই আমি এটি জিজ্ঞাসা করার সাহস করি))
সংক্ষেপে
আমি একটি ডকার পাত্রে মাইএসকিএল চালাতে চাই এবং এটি আমার হোস্টের সাথে সংযুক্ত করতে চাই। এখনও অবধি, আমি যা অর্জন করেছি তা হ'ল:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
আরো বিস্তারিত
আমি নিম্নলিখিত ব্যবহার করছি Dockerfile
:
FROM ubuntu:14.04.3
RUN apt-get update && apt-get install -y mysql-server
# Ensure we won't bind to localhost only
RUN grep -v bind-address /etc/mysql/my.cnf > temp.txt \
&& mv temp.txt /etc/mysql/my.cnf
# It doesn't seem needed since I'll use -p, but it can't hurt
EXPOSE 3306
CMD /etc/init.d/mysql start && tail -F /var/log/mysql.log
এই ফাইলটি যে ডিরেক্টরিতে রয়েছে সেখানে আমি সফলভাবে চিত্রটি তৈরি করতে এবং এটি দিয়ে চালাতে পারি:
> docker build -t my-image .
> docker run -d -p 12345:3306 my-image
আমি যখন ছবিটির সাথে সংযুক্ত করি, মনে হয় এটি ঠিক কাজ করে:
# from the host
> docker exec -it <my_image_name> bash
#inside of the container now
$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
[...]
তবে হোস্টের কাছ থেকে আমার তেমন সাফল্য নেই:
> mysql -P 12345 -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
আরও বিশদ
- আমি দেখেছি যে একটি প্রশ্ন আমার মত দেখাচ্ছে । তবে এটি একই নয় (এবং এটির কোনও উত্তর নেই)
- আমি দেখেছি যে মাইএসকিএলকে উত্সর্গীকৃত চিত্র রয়েছে তবে সেগুলি নিয়ে আমার বেশি সাফল্য হয়নি
- আমার
grep -v
অদ্ভুত লাগতে পারে। স্বীকার করা, এটি করার জন্য আরও পরিষ্কার উপায় থাকতে পারে। তবে যখন আমি আমার চিত্রটি সংযুক্ত করি, তখন আমি এটি পর্যবেক্ষণ করতে পারি বাস্তবে এটি প্রত্যাশিত হিসাবে কাজ করেছে (যেমন: মুছে ফেলাbind-address
)। এবং আমি ধারকটিতে দেখতে পাচ্ছি/var/log/mysql/error.log
:
সার্ভারের হোস্টনাম (বাইন্ড-ঠিকানা): '0.0.0.0'; পোর্ট: 3306 - '০.০.০.০' '0.0.০.০' এ সমাধান করে; আইপি তে সার্ভার সকেট তৈরি হয়েছে: '0.0.0.0'।